/**
 * @file kprint.h
 * @author longjin
 * @brief 内核日志打印程序
 * @date 2022-01-28
 * 
 * @copyright Copyright (c) 2022 longjin
 * 
 */

#pragma once
#include "printk.h"

#define ksuccess(...)                           \
    do                                       \
    {                                        \
        printk("[ ");                        \
        printk_color(GREEN, BLACK, "SUCCESS"); \
        printk(" ] ");                       \
        printk(__VA_ARGS__);                 \
        printk("\n");                        \
    } while (0);

#define kinfo(...)           \
    do                       \
    {                        \
        printk("[ INFO ] "); \
        printk(__VA_ARGS__); \
        printk("\n");        \
    } while (0);

#define kdebug(...)           \
    do                        \
    {                         \
        printk("[ DEBUG ] (%s:%d)\t", __FILE__, __LINE__); \
        printk(__VA_ARGS__);  \
        printk("\n");         \
    } while (0);

#define kwarn(...)                           \
    do                                       \
    {                                        \
        printk("[ ");                        \
        printk_color(YELLOW, BLACK, "WARN"); \
        printk(" ] ");                       \
        printk(__VA_ARGS__);                 \
        printk("\n");                        \
    } while (0);

#define kerror(...)                        \
    do                                     \
    {                                      \
        printk("[ ");                      \
        printk_color(RED, BLACK, "ERROR"); \
        printk(" ] ");                     \
        printk(__VA_ARGS__);               \
        printk("\n");                      \
    } while (0);

#define kterminated(...)                        \
    do                                     \
    {                                      \
        printk("[ ");                      \
        printk_color(RED, BLACK, "TERMINATED"); \
        printk(" ] ");                     \
        printk(__VA_ARGS__);               \
        printk("\n");                      \
    } while (0);

#define kBUG(...)                        \
    do                                     \
    {                                      \
        printk("[ ");                      \
        printk_color(RED, BLACK, "BUG"); \
        printk(" ] (%s:%d)\t", __FILE__, __LINE__);                     \
        printk(__VA_ARGS__);               \
        printk("\n");                      \
    } while (0);