linux-l: printk

Dennis Schneider sdans at web.de
Mi Jul 18 12:46:10 CEST 2001


Sascha Knapp wrote on 17.07.2001 at 11:19:59 +0200:
>#define __KERNEL__
>#define MODULE
>
>#include  <linux/kernel.h>
>
>int main()
>{
>   printk(KERNEL_NOTICE "Hallo Welt!");
>   return 0;
>}

Hm. Das ist alles, aber kein Code für ein richtiges Kernelmodul. ;)
Bei einem Kernelmodul gibt es 2 Funktionen: eine zum Initialisieren und
eine, die vor dem entfernen ausgeführt wird.
Außerdem musst du solche Module dann mit -c übersetzen, damit das
entstehende Objekt nicht gelinkt wird.
Ich habe den Code mal so modifiziert, damit er funktioniert:

------------------- 8< -------------------
#define __KERNEL__
#define MODULE

#include  <linux/kernel.h>
#include <linux/module.h>

int init_module(void)
{
   printk(KERN_NOTICE "Hallo Welt!\n");
	 return 0;
}

int cleanup_module(void)
{
	printk(KERN_NOTICE "Have a nice day.\n");
	return 0;
}
------------------- 8< -------------------

Das ganze dann noch mit gcc -c -o testmodul.o testmodul.c übersetzen,
laden und es erscheint im Log "Hallo Welt!". :)
Wenn du Module programmieren möchtest, dann schau dir mal ein paar
Module im Kernelbaum an, da ist das sozusagen praktisch kommentiert.

dan"Juchu! Ferien!"s
-- 
> Irgendwann kommen sie wenn du auf dem Clo hockst durch den Kanal
> um dir ihren Schotter anzudrehen =;o))
Hey Mann! Das ist Deine grosse Chance, da kannst Du sie einfach
bescheissen. Immerhin sitzt Du in dem Moment sozusagen am Druecker ...



Mehr Informationen über die Mailingliste linux-l