Merge branch 'master' of github.com:Minep/lunaix-os
[lunaix-os.git] / lunaix-os / includes / lunaix / syslog.h
index 91e20036461e712cbfd10c83a3cecf1f9fcfb5ef..487785762d1aa8542adf0a2effcc92dc790798e7 100644 (file)
@@ -1,29 +1,62 @@
 #ifndef __LUNAIX_SYSLOG_H
 #define __LUNAIX_SYSLOG_H
 
+#include <lunaix/compiler.h>
 #include <stdarg.h>
 
-#define _LEVEL_INFO  "0"
-#define _LEVEL_WARN  "1"
-#define _LEVEL_ERROR "2"
-
-#define KINFO    "\x1b" _LEVEL_INFO
-#define KWARN    "\x1b" _LEVEL_WARN
-#define KERROR   "\x1b" _LEVEL_ERROR
-
-#define LOG_MODULE(module)                  \
-    static void kprintf(const char* fmt, ...) {    \
-        va_list args;                       \
-        va_start(args, fmt);                \
-        __kprintf(module, fmt, args);       \
-        va_end(args);                       \
+#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 INFO(fmt, ...) kprintf(KINFO 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(const char* component, const char* fmt, va_list args);
+kprintf_m(const char* component, const char* fmt, va_list args);
 
+// TODO need more thought on it
 
-void
-kprint_panic(const char* fmt, ...);
+// 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 */