ヘッダーは、主に virtio_test
などのユーザー空間のテストに使用されます .
tools/virtio/virtio_test.c
の git-log から :
これは、ツールのユーザー空間部分です。これには、Linux API 用のスタブが含まれており、linuxsched に多少似ています。これにより、リング コードをユーザー空間で再コンパイルすることが可能になります。
これを vhost_testmodule と組み合わせた小さなテスト例が実装されています。
そうです、コードは少し安全ではありません (クリーンなコーディングは NULL
をテストします) memset()
より前のポインター 適切なエラー メッセージで救済されます) が、これは単なるテスト ツールであるため、このテストをスキップすることは重要ではないと考えられていたようです。
はい、間違いなくバグのようです。
tools/
サブディレクトリは、ユーザー空間ツールのコレクションです (名前が示すように)。これは、いくつかの C 標準ライブラリ ヘッダーが含まれていることからもわかります。したがって、これはもちろんカーネルのバグではありません (これは非常に悪いことでした)。virtio
テスト ツールです。
その virtio
テスト ツールは、一部のカーネル API を再定義して、ユーザー空間での動作を模倣しているようです。ただし、その関数は実際には使用されていないようで、単に定義されているだけです。
marco:~/git/linux/tools/virtio$ grep -r kzalloc
linux/kernel.h:static inline void *kzalloc(size_t s, gfp_t gfp)
ringtest/ptr_ring.c:static inline void *kzalloc(unsigned size, gfp_t flags)
marco:~/git/linux/tools/virtio$
おそらく、ユーザー空間でいくつかの virtio カーネル コードをテストしたい人が使用することを意図しています。
いずれにせよ、バグを報告してみてください。 get_mantainer.pl
スクリプトの提案:
$ perl scripts/get_maintainer.pl -f tools/virtio/linux/kernel.h
Bad divisor in main::vcs_assign: 0
"Michael S. Tsirkin" <[email protected]> (maintainer:VIRTIO CORE AND NET DRIVERS)
Jason Wang <[email protected]> (maintainer:VIRTIO CORE AND NET DRIVERS)
[email protected] (open list:VIRTIO CORE AND NET DRIVERS)
[email protected] (open list)