Ri:Re: Ri:linux-l: printk

Frank Reker <frank@reker.net> reker at inwind.it
Di Jul 17 16:32:06 CEST 2001


> 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)

#define printk(a,b) printf (a,b)
die prioritaet am anfang ist kein eigener parameter, sondern nur ein 
String der Form "1" und "1" "hello world\n" ist identisch zu "1hello world\n",
man hat dann also immer noch so´ne prio-nummer vorne weg stehen.
Und mehr und weniger als 1 Param, laesst sich dann auch nicht angeben.
Und Macros mit variabler parameter-liste gibt es AFAIK nicht.
Besser ist dann schon:
#include <stdlib.h>
#include <stdio.h>
#include <stdarg.h>
int 
printk (fmt, ...) 
   const char * fmt;
{
   va_list ap;
   int retval;

   if (!fmt || !*fmt) return 0;
   va_start (ap, fmt);
   retval=vfprintf (stderr, fmt+1, ap);
   va_end (ap);

   return retval;
}
 

-- 
Don´t worry be happy ...
Ciao tex




Mehr Informationen über die Mailingliste linux-l