diff options
| author | Miguel <m.i@gmx.at> | 2018-08-22 14:46:13 +0200 |
|---|---|---|
| committer | Miguel <m.i@gmx.at> | 2018-08-22 14:46:13 +0200 |
| commit | eddfc270d887283674563530b9fd982a2692f8c3 (patch) | |
| tree | cd6f0269bdb971e5921226d2594d303f2855ea98 /kernel | |
| parent | d99ddc6f38879fb30eaeb7dcafe25d1476613cb1 (diff) | |
cleaning up
Diffstat (limited to 'kernel')
| -rw-r--r-- | kernel/kernel.h | 16 | ||||
| -rw-r--r-- | kernel/log.c | 63 | ||||
| -rw-r--r-- | kernel/log.h | 13 | ||||
| -rw-r--r-- | kernel/mem.c | 1 |
4 files changed, 79 insertions, 14 deletions
diff --git a/kernel/kernel.h b/kernel/kernel.h index 5ac10d1..97be89c 100644 --- a/kernel/kernel.h +++ b/kernel/kernel.h @@ -5,28 +5,18 @@ #ifndef FOOLOS_CONFIG_H #define FOOLOS_CONFIG_H -#include "lib/logger/log.h" +#define KERNEL_NAME "F00l-Os" +#define BIN_INIT "/bin/init" -#define KERNEL_NAME "FoolOS" #define FIFO_MAX_RINGBUFFERS 20 #define MAX_FIFOS 20 #define MAX_FD 20 #define MAX_TASKS 255 - -#define FOOLOS_CONSOLE_AUTOBREAK // add newline automatically at end of line +#define MEM_PRINT_MEMORYMAP //#define FOOLOS_LOG_OFF // do not log anything -#define FOOLOS_LOG_WHITELIST "" //,"elf","ext2","" // make exceptions for these modules. wmpty string marks the end -#define FOOLOS_LOG_LEVEL FOOLOS_LOG_DEBUG // minimal severity level to log - -#define FOOLOS_CONSOLE // otherwise VESA will be used! -#define FOOLSOS_SHOW_VESAMODES -#define MEM_PRINT_MEMORYMAP -#define LOG_BUF_SIZE 4069 //#define LOG_SYSCALLS -#define BIN_INIT "/bin/init" - #define KMALLOC_MEM_SIZE 1024*1024*8 // 8MB for in kernel-memory #define NUMBER_SPINLOCKS 16 diff --git a/kernel/log.c b/kernel/log.c new file mode 100644 index 0000000..ff1b8bf --- /dev/null +++ b/kernel/log.c @@ -0,0 +1,63 @@ +#define FOOLOS_MODULE_NAME "log" +#include "log.h" + +#include <stdarg.h> +#include <stdbool.h> + +#include "kernel/kernel.h" +#include "kernel/fifo.h" + +#include "lib/string/string.h" + +static void log_string(char *str) +{ +// if(get_max_fd()>=2) syscall_write(2,str,strlen(str)); + while(*str!=0) + { + serial_write(*str++); + } +} + +void log(char *module_name, int log_level, char *format_string, ...) +{ + #ifdef FOOLOS_LOG_OFF + return; + #endif + + if(log_level<FOOLOS_LOG_LEVEL)return; + + char buf_info[256]; + char buf_log[256]; + char buf_time[20]; + + uint64_t t=timer_get_uptime_ms(); + uint32_t ms=t%1000; + uint32_t s=t/1000; + + tfp_sprintf(buf_time,"[%04d %03d]",s,ms); + + va_list va; + va_start(va,format_string); + tfp_vsprintf(buf_info,format_string,va); + va_end(va); + + tfp_sprintf(buf_log,"\033[36;40m%s\033[31;40m %10s:\033[37;40m %s\n",buf_time,module_name,buf_info); + + log_string(buf_log); +} + +void panic(char *module_name, char *message) +{ + char buf_log[256]; + tfp_sprintf(buf_log,"\033[41;37m\n !! KERNEL PANIC !! %s: %s\n\n\033[37;40m",module_name,message); + + //PANIC DIRECTLY TO STDOUT// + syscall_write(1,buf_log,strlen(buf_log)); + log_string(buf_log); + + while(1) + { + asm volatile("cli"); + asm volatile("hlt"); + } +} diff --git a/kernel/log.h b/kernel/log.h new file mode 100644 index 0000000..38f1219 --- /dev/null +++ b/kernel/log.h @@ -0,0 +1,13 @@ +#ifndef FOOLOS_LOG_H +#define FOOLOS_LOG_H + +#define FOOLOS_LOG_ERROR 5 +#define FOOLOS_LOG_WARNING 4 +#define FOOLOS_LOG_INFO 3 +#define FOOLOS_LOG_DEBUG 2 +#define FOOLOS_LOG_FINE 1 + +void log(char *module_name, int prio, char *format_string, ...); +void panic(char *module_name, char *format_string); + +#endif diff --git a/kernel/mem.c b/kernel/mem.c index 8b90911..444e52b 100644 --- a/kernel/mem.c +++ b/kernel/mem.c @@ -4,7 +4,6 @@ #include "kernel.h" #include "multiboot.h" -#include "lib/logger/log.h" #define PMMNGR_BLOCKS_PER_BYTE 8 #define PMMNGR_BLOCK_SIZE 4096 |
