printk.c

来自「一个用于学习的操作系统」· C语言 代码 · 共 69 行

C
69
字号
/*文件名: panik.c
  说明:   内核中打印信息
  作者:   marsinfan
  日期:   2005/12/20
*/

#include <stdarg.h>
#include <fairysky/types.h>

static char buf[1024];
static unsigned long log_page = 0;
static unsigned long log_start = 0;
static unsigned long log_size = 0;

extern int vsprintf(char *buf, const char *fmt, va_list args);
extern void console_print(const char *);

//在内核中在屏幕上直接打印信息
int printk(const char *fmt, ...)
{
    va_list args;
    int i, j;
    char *p;

    va_start(args, fmt);
    i = vsprintf(buf, fmt, args);
    va_end(args);
    for (j = 0; j < i && log_page ; j++) {
        p = (char *) log_page + (4095 & (log_start + log_size));
        *p = buf[j];
        if (log_size < 4096) {
            log_size++;
        } else {
            log_start++;
        }
    }
    //if (log_page)
    //  wake_up(&log_wait);
    console_print(buf);
    return i;
}

int sprintf(char *str, const char *fmt, ...)
{
    va_list args;
    int i;

    va_start(args, fmt);
    i = vsprintf(str, fmt, args);
    va_end(args);
    return i;
}

void print_hex(void *buf, size_t count)
{
    int i;
     for (i = 0; i < count; i++) {
        if (i != 0) {
            if (i % 16 == 0) {
                printk("\n");
            } else if (i % 8 == 0) {
                printk("   ");
            }
        }
        printk("%02X ", ((u8 *)buf)[i]);
    }
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?