Annotation of linux/kernel/printk.c, revision 1.1.1.2

1.1       root        1: /*
1.1.1.2 ! root        2:  *  linux/kernel/printk.c
        !             3:  *
        !             4:  *  (C) 1991  Linus Torvalds
        !             5:  */
        !             6: 
        !             7: /*
1.1       root        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: 
1.1.1.2 ! root       19: extern int vsprintf(char * buf, const char * fmt, va_list args);
        !            20: 
1.1       root       21: int printk(const char *fmt, ...)
                     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: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.