Ri:linux-l: printk
Ihno Krumreich
ihno at fh-brandenburg.de
Di Jul 17 16:15:05 CEST 2001
>
> > Ok, dann will ich mal eine Fehlerbeschreibung geben,
> >
> > #define __KERNEL__
> > #define MODULE
> >
> > #include <linux/kernel.h>
> >
> > int main()
> > {
> > printk(KERNEL_NOTICE "Hallo Welt!");
> > return 0;
> > }
> >
> > Das war das Programm und jetzt der Fehler
> >
> > undefined reference to `printk`
>
> Klar, printk ist eine reine Kernelfunktion, d.h. sie ist nur
> dazu gedacht, dass der Kernel Meldungen auf die Konsole
> schreibt. Sie ist daher auch nicht in der libc enthalten, so dass
> du ein undefined reference bekommst.
> Um auf stdout zu schreiben, kannst du printf verwenden. Mit
> fprintf kannst du an einen beliebigen File-handle schreiben.
> Wenn es sich nicht um stdin, stdout, stderr handelt, musst du
> das File erst mit fopen oeffnen, welches dann einen neuen
> File-handle zurueckliefert. Das ganze funzt auch mit devices,
> z.B. /dev/console oder /dev/tty ( die 2. virtuelle Console, die du mit
> alt-control-F2 erreichst.) Um diese zu oeffnen, musst du allerding
> root sein, in der Gruppe tty sein, oder dir muss das Device
> gehoeren, sprich du hast dich dort bereits eingeloggt.
> Anstatt fprintf, fopen, fclose, ... kannst du auch die system-calls
> open, close, read und write benutzen, aber das ist nicht so komfortabel,
> und nicht unbedingt auf andere BSe portabel.
> Um Meldungen an den syslog daemon zu schicken, gibt´s die
> Funktion syslog(), die aehnlich funzt wie fprintf.
>
Treiberentwicklung im Kernel ist AETZEND. Laest sich bis zu einem
gewissen Grade natuerlich nicht vermeiden. Um nicht Kernel-relevante
Teile zu Testen lohnt sich meiner Mainung nach eine kleine Simulation/Emulation.
also in der Form
#define printk(a,b,c) printf(b,c)
Damit sollte sich das Programm im User-Space uebersetzen lassen und
man kann Funktionalitaeten Pruefen die den Kernel NICHT zwingend
vorraussetzen.
Habe das ganze bei einem Solaris-Treiber sehr weit getrieben
und viele Fehler in meinem Treiber gefunden.
Gruss
Ihno Krumreich
==============================================================================
Ihno Krumreich | Phone (49) 3381 355438 U U N N III X X
FH Brandenburg | email: ihno at fh-brandenburg.de U U NN N I X X
Magdeburgerstr. 50 | FAX (49) 3381 355499 U U N N N I X
D-14770 Brandenburg | NIC:IK139 RIPE:IK255-RIPE U U N NN I X X
UUU N N III X X
___________________________________________________________________
NT is not the answer, it's the question and the answer is NO
Mehr Informationen über die Mailingliste linux-l