root/kernel/printk.c

/* [previous][next][first][last][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. printk

   1 /*
   2  *  linux/kernel/printk.c
   3  *
   4  *  (C) 1991  Linus Torvalds
   5  */
   6 
   7 /*
   8  * When in kernel-mode, we cannot use printf, as fs is liable to
   9  * point to 'interesting' things. Make a printf with fs-saving, and
  10  * all is well.
  11  */
  12 #include <stdarg.h>
  13 #include <stddef.h>
  14 
  15 #include <linux/kernel.h>
  16 
  17 static char buf[1024];
  18 
  19 extern int vsprintf(char * buf, const char * fmt, va_list args);
  20 
  21 int printk(const char *fmt, ...)
     /* [previous][next][first][last][top][bottom][index][help] */
  22 {
  23         va_list args;
  24         int i;
  25 
  26         va_start(args, fmt);
  27         i=vsprintf(buf,fmt,args);
  28         va_end(args);
  29         __asm__("push %%fs\n\t"
  30                 "push %%ds\n\t"
  31                 "pop %%fs\n\t"
  32                 "pushl %0\n\t"
  33                 "pushl $_buf\n\t"
  34                 "pushl $0\n\t"
  35                 "call _tty_write\n\t"
  36                 "addl $8,%%esp\n\t"
  37                 "popl %0\n\t"
  38                 "pop %%fs"
  39                 ::"r" (i):"ax","cx","dx");
  40         return i;
  41 }

/* [previous][next][first][last][top][bottom][index][help] */