Der Header wird hauptsächlich für Userspace-Tests verwendet, wie z. B. virtio_test
.
Aus dem Git-Log von tools/virtio/virtio_test.c
:
Dies ist der Userspace-Teil des Tools:Er enthält eine Reihe von Stubs für Linux-APIs, ähnlich wie Linuxsched. Dadurch ist es möglich, den Ringcode im Userspace neu zu kompilieren.
Kombiniert mit vhost_testmodule.
wird ein kleines Testbeispiel implementiert
Also ja, der Code ist etwas unsicher (saubere Codierung würde auf NULL
testen Zeiger vor memset()
und mit einer entsprechenden Fehlermeldung abspringen), aber da es sich nur um ein Testwerkzeug handelt, scheint es als unkritisch angesehen worden zu sein, diesen Test zu überspringen.
Ja, das sieht definitiv nach einem Bug aus.
Die tools/
Unterverzeichnis ist eine Sammlung von User-Space-Tools (wie der Name schon sagt). Sie können dies auch daran erkennen, dass mehrere Header der C-Standardbibliothek enthalten sind. Das ist also natürlich kein Kernel-Fehler (das wäre sehr schlimm gewesen), nur ein kleines Versehen in virtio
Testwerkzeug.
Diese virtio
Das Testing-Tool scheint einige Kernel-APIs neu zu definieren, um ihr Verhalten im Userspace zu verspotten. Diese Funktion scheint jedoch in der Praxis nie verwendet zu werden, sondern lediglich definiert zu sein.
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$
Es ist wahrscheinlich für jemanden gedacht, der etwas Virtio-Kernel-Code im Userspace testen möchte.
In jedem Fall können Sie versuchen, den Fehler zu melden. Die get_mantainer.pl
Skript schlägt vor:
$ 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)