#include "klog_api.h" #include #include #define LOG_MSG_SZ 1024 #define MODULE_FMT "[%s]" klog_t *g_klog = NULL; klog_t *klog_init(const char *module_name) { klog_t *log = NULL; u32 len = 0; if(NULL == module_name) { return NULL; } len = strlen(module_name); if (len > MAX_MODULE_NAME_SZ) { printk(KERN_ERR"The length:%d of module_name must be not more than %d, but input module_name is %s", len, MAX_MODULE_NAME_SZ, module_name); return NULL; } log = (klog_t *)kmalloc(sizeof(*log), GFP_KERNEL); if (NULL == log) { printk(KERN_ERR"Allocating log memory is failure"); return NULL; } memset(log->module_name, '\0', MAX_MODULE_NAME_SZ+1); strncpy(log->module_name, module_name, len); return log; } void klog_close(klog_t *log) { if (log != NULL) { kfree(log); } } void klog_record(const klog_t *log, const char* level_str, const char *fmt, ...) { char log_buf[LOG_MSG_SZ]; va_list args; va_start(args, fmt); vsnprintf(log_buf, sizeof(log_buf), fmt, args); va_end(args); if (NULL != log) { printk("%s"MODULE_FMT" %s", level_str, log->module_name, log_buf) ; } else { printk("%s %s", level_str, log_buf) ; } } EXPORT_SYMBOL_GPL(klog_init); EXPORT_SYMBOL_GPL(klog_close); EXPORT_SYMBOL_GPL(klog_record); static int __init klog_api_init(void) { g_klog = klog_init("klog_api"); KLOG_INFO(g_klog, "Klog is initiated"); return 0; } static void __exit klog_api_exit(void) { KLOG_INFO(g_klog, "Klog is exited"); klog_close(g_klog); } module_init(klog_api_init); module_exit(klog_api_exit); MODULE_LICENSE("GPL"); MODULE_DESCRIPTION("Klog_api process module"); MODULE_AUTHOR("zhangtao");