メモ

一昨日のエントリにて do_sync_read() 関数を云々している。
で、そこから呼ばれてる

		ret = filp->f_op->aio_read(&kiocb, &iov, 1, kiocb.ki_pos);

なソレをインターフェース扱いしてて、その generic なナニが filemap.c の generic_file_aio_read() ではないかと。参考になるのはそこに記述されているコメントで引数について以下の記述あり。

/**
 * generic_file_aio_read - generic filesystem read routine
 * @iocb:	kernel I/O control block
 * @iov:	io vector request
 * @nr_segs:	number of segments in the iovec
 * @pos:	current file position
 *
 * This is the "read()" routine for all filesystems
 * that can use the page cache directly.
 */

Linux Kernel Hack Japan の構造体の記述含め、色々確認必要。とりあえず

  • struct kiodb は kernel I/O control block
  • struct iovec は io vector request

とゆーのは分かった。ちょっとコード読むばかりではなくって各種ドキュメントの精読が必要だな、と思わざるを得ない今日この頃ッス。