0

工程をトラスしたところ、以下のような線になっています。そして、kaio の定義を知りたいのですが、kaio のマニュアルエントリがないので、定義を取得できますか?

/1: かいお(AIOWRITE, 259, 0x3805B2A00, 8704, 0x099C9E000755D3C0) = 0
/1: かいお(AIOWRITE, 259, 0x380CF9200, 14336, 0x099CC0000755D5B8) = 0
/1: かいお(AIOWRITE, 259, 0x381573600, 8704, 0x099CF8000755D7B0) = 0
/1: かいお(AIOWRITE, 259, 0x381ACA600, 8192, 0x099D1A000755D9A8) = 0
/1: かいお(AIOWAIT, 0xFFFFFFFF7FFFD620) = 4418032576
/1: タイムアウト: 600.000000 秒
/1: かいお(AIOWAIT, 0xFFFFFFFF7FFFD620) = 4418033080
/1: タイムアウト: 600.000000 秒
/1: かいお(AIOWAIT, 0xFFFFFFFF7FFFD620) = 4418033584
/1: タイムアウト: 600.000000 秒
4

2 に答える 2

3

それについての記事から:

名前が示すように、kaio が行うことは、ユーザー スレッドを介してユーザー ランドではなく、カーネル内に非同期 I/O を実装することです。I/O キューは、オペレーティング システムで作成および管理されます。イベントの基本的な順序は次のとおりです。 アプリケーションが aioread(3) または aiowrite(3) を呼び出すと、対応するライブラリ ルーチンに入ります。入力すると、ライブラリは最初に kaio を介してリクエストを処理しようとします。kaio 初期化ルーチンが実行され、「クリーンアップ」スレッドが作成されます。これは、非同期 I/O プロセス中に割り当てられたが解放されていないメモリ セグメントが残っていないことを確認することを目的としています。それが完了すると、kaio が呼び出され、要求された I/O に対して kaio がサポートされているかどうかを判断するためのテストが行​​われます。

Kaio は、ロード可能なカーネル モジュール /kernel/sys/kaio として実装され、非同期 I/O が初めて呼び出されたときにロードされます。modinfo(1M) を使用して、モジュールがロードされているかどうかを判断できます。

fawlty> modinfo | grep kaio 
105 608c4000   2efd 178   1  kaio (kernel Async I/O) 
fawlty> 
于 2010-04-16T01:45:05.720 に答える
0

私は答えを得る:

ファイル /usr/include/sys/syscall.h で定義されています

#SYS_kaio 178 を定義
        /*
         * サブコード:
         * aioread(...) :: kaio(AIOREAD, ...)
         * aiowrite(...) :: kaio(AIOWRITE, ...)
         * aiowait(...) :: kaio(AIOWAIT, ...)
         * aiocancel(...) :: kaio(AIOCANCEL, ...)
         * aionotify() :: kaio(AIONOTIFY)
         * aioinit() :: カイオ(AIOINIT)
         * aiostart() :: カイオ(AIOSTART)
         * 見る
         */
于 2010-04-16T03:25:17.727 に答える