#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; 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_red(buf_log); while(1); // halt } void log_log() { #ifdef FOOLOS_LOG_OFF return; #endif char buf_log[256]; tfp_sprintf(buf_log,"[ 0.00000] log: buffer state: first=%d, last=%d, buf_size=%d\n",first,last,LOG_BUF_SIZE); console_put_str_gray(buf_log); for(int i=first;i!=last;i++) { console_put_char_gray(buffer[i]); } }