カーネル経由でブロック レベルのストレージにアクセスする方法 (scsi ライブラリを使用しない場合)?
私の意図は、SCSI が機能するのとほぼ同じように、学習目的でネットワーク上にブロック レベルのストレージ プロトコルを実装することです。要求はイニシエーターによって生成され、カーネル モジュールを呼び出して、TCP プロトコルを使用してデータをイニシエーターに返すターゲット (両方のユーザー空間プログラム) に送信されます。
これまでのところ、単純な「Hello」モジュールを作成して実行することができましたが (カーネル プログラミングは初めてです)、ブロック アクセスを続行できません。
いろいろ検索したところ、 で見つかりましstruct buffer_head * bread(int dev,int block)
たlinux/fs.h
が、コンパイラがエラーをスローします。
error: implicit declaration of function ‘bread’
助けてください。また、カーネルプログラミングを始める際のアドバイスもお気軽に。
ありがとうございました!
bread
古いカーネルで使用されているように。
struct request *blk_get_request(struct request_queue *, int, gfp_t);
中をのぞくlinux/blkdev.h
ブロック デバイスへのアクセスは、カーネル経由で行う必要があります。