Ich optimiere Code im Verzeichnis /net
des Linux-Kernels.
Ich habe versucht, Dinge wie das Drucken auszuprobieren, aber ich sehe, dass es keine relevanten Header (wie stdlib.h
, stdio.h
usw.) gibt. Wie kann ich das auf Kernel-Ebene machen?
Ich optimiere Code im Verzeichnis /net
des Linux-Kernels.
Ich habe versucht, Dinge wie das Drucken auszuprobieren, aber ich sehe, dass es keine relevanten Header (wie stdlib.h
, stdio.h
usw.) gibt. Wie kann ich das auf Kernel-Ebene machen?
Sie können in Kernel keine Benutzerbereichsbibliotheksfunktionen verwenden, sondern sollten nur Funktionen verwenden, die vom Kernel exportiert werden. Daher gibt es keine stdio.h
, stdlib.h
, usw. Wenn Sie im Kernel etwas drucken möchten, verwenden Sie die printk()
-Funktion, die dem printf()
im Benutzerbereich entspricht.
Siehe auch meine Blog-Beiträge Linux-Modulprogrammierung Teil 1 und Teil 2.
Kernel-Module haben keinen Zugriff auf die C-Standardbibliothek. Es gibt einige Funktionen im Kernel verfügbar; schau im lib
-Verzeichnis im Kernel-Quellcode oder in deinem Lieblings-Linux-Kernel-Programmierbuch nach (falls du keines hast, Linux Device Drivers ist eins gutes und es ist online verfügbar). Für printf-Debugging gibt es printk
, das Nachrichten an die Kernel-Logs sendet.
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.