#define FOOLOS_MODULE_NAME "log" #include #include "log.h" #include "kernel/config.h" #include "kernel/console.h" #include "lib/printf/printf.h" #include "lib/int/stdint.h" #include "lib/bool/bool.h" #include "kernel/timer.h" static char buffer[LOG_BUF_SIZE]; static int first=0; static int last=0; static bool init=false; void log(char *module_name, int log_level, char *format_string, ...) { #ifdef FOOLOS_LOG_OFF return; #endif if(log_level=LOG_BUF_SIZE)first=(first+1)%LOG_BUF_SIZE; if(last>first)if(LOG_BUF_SIZE-last+first>=LOG_BUF_SIZE)first=(first+1)%LOG_BUF_SIZE; } } void panic(char *module_name, char *message) { char buf_log[256]; tfp_sprintf(buf_log,"KERNEL PANIC !! %s: %s\n",module_name,message); console_put_str(buf_log); while(1); // halt } void log_log() { for(int i=first;i!=last;i++) { console_put_char(buffer[i]); } }