Linuxカーネルのmake_request_fnソースコードはどこにありますか?

Linuxカーネルのmake_request_fnソースコードはどこにありますか?

Linuxカーネルコードを調べて調べたところ、私は次の機能を見つけました。make_request_fn。存在するこれリンクによると、この関数型定義は次の場所にあります。include/linux/blkdev.h、211行目:

typedef void (make_request_fn) (struct request_queue *q, struct bio *bio);

しかし、.cファイルからソースコードへの実装がどこにあるかについての言及はありません。私の質問は、この関数のソースコードはどこですか?

ベストアンサー1

typedef void (make_request_fn) (struct request_queue *q, struct bio *bio);

これはない関数宣言。その定義は機能タイプ。後で同じファイルにinclude/linux/blkdev.h、299行request_queue同じ名前の構造体のフィールドを取得します。

そしてdrivers/md/bcache/request.cファイルの1140行、このフィールドには関数が割り当てられているので関数をflash_dev_make_request呼び出したと思いますmake_request_fn()が実際には呼び出しましたflash_dev_make_request()

これはカプセル化と多型を提供する本当に基本的な方法であり、Cの本当に基本的なOOPモデルです。

おすすめ記事