#ifndef _QSEE_PRINTK_H_
#define _QSEE_PRINTK_H_

#include <stdarg.h>
#include <sys/uio.h>

void klog_set_level(int level);
void klog_write(int level, const char *fmt, ...) __attribute__((format(printf, 2, 3)));

#define KLOG_ERROR_LEVEL        3
#define KLOG_WARNING_LEVEL      4
#define KLOG_NOTICE_LEVEL       5
#define KLOG_INFO_LEVEL         6
#define KLOG_DEBUG_LEVEL        7

#define KLOG_ERROR(tag, x...)   klog_write(KLOG_ERROR_LEVEL, "<3>" tag ": " x)
#define KLOG_WARNING(tag, x...) klog_write(KLOG_WARNING_LEVEL, "<4>" tag ": " x)
#define KLOG_NOTICE(tag, x...)  klog_write(KLOG_NOTICE_LEVEL, "<5>" tag ": " x)
#define KLOG_INFO(tag, x...)    klog_write(KLOG_INFO_LEVEL, "<6>" tag ": " x)
#define KLOG_DEBUG(tag, x...)   klog_write(KLOG_DEBUG_LEVEL, "<7>" tag ": " x)

#endif // end _QSEE_PRINTK_H_
