#ifndef __LUNAIX_SYSLOG_H #define __LUNAIX_SYSLOG_H #include #include #define KLOG_DEBUG 0 #define KLOG_INFO 1 #define KLOG_WARN 2 #define KLOG_ERROR 3 #define KLOG_FATAL 4 #define KMSG_LVLSTART '\x1b' #define KMSG_LOGLEVEL(c) ((c) - '0') #define KDEBUG "\x1b" stringify__(KLOG_DEBUG) #define KINFO "\x1b" stringify__(KLOG_INFO) #define KWARN "\x1b" stringify__(KLOG_WARN) #define KERROR "\x1b" stringify__(KLOG_ERROR) #define KFATAL "\x1b" stringify__(KLOG_FATAL) #define LOG_MODULE(module) \ static void kprintf(const char* fmt, ...) \ { \ va_list args; \ va_start(args, fmt); \ kprintf_m(module, fmt, args); \ va_end(args); \ } #define DEBUG(fmt, ...) kprintf(KDEBUG fmt, ##__VA_ARGS__) #define WARN(fmt, ...) kprintf(KWARN fmt, ##__VA_ARGS__) #define ERROR(fmt, ...) kprintf(KERROR fmt, ##__VA_ARGS__) #define FATAL(fmt, ...) \ ({ \ kprintf(KFATAL fmt, ##__VA_ARGS__); \ spin(); \ }) void kprintf_m(const char* component, const char* fmt, va_list args); // TODO need more thought on it // struct klog_chunk // { // void* log_entry; // size_t max_len; // size_t len; // }; // struct klog_chunk* // kprintf_lcstart_m(const char* component, size_t size); // void // kprintf_lcappend_m(struct klog_chunk*, const char* fmt, va_list args); // void // kprintf_lcdone_m(struct klog_chunk*); #endif /* __LUNAIX_SYSLOG_H */