diff options
author | Alexis211 <alexis211@gmail.com> | 2010-08-10 20:39:57 +0200 |
---|---|---|
committer | Alexis211 <alexis211@gmail.com> | 2010-08-10 20:39:57 +0200 |
commit | f81bf65484fa8c81a1886f456c71f1e6eebe84e9 (patch) | |
tree | 146f304d8de8828003edd548df22cca581044017 /src/kernel/core/sys.c | |
parent | 0ec0ca40a4fedfe97c49903a329b2a9ad2e22d03 (diff) | |
download | TCE-f81bf65484fa8c81a1886f456c71f1e6eebe84e9.tar.gz TCE-f81bf65484fa8c81a1886f456c71f1e6eebe84e9.zip |
Added a lot of comments in kernel code. A bit of cleaning too.
Diffstat (limited to 'src/kernel/core/sys.c')
-rw-r--r-- | src/kernel/core/sys.c | 21 |
1 files changed, 17 insertions, 4 deletions
diff --git a/src/kernel/core/sys.c b/src/kernel/core/sys.c index 1e07f7c..96d4908 100644 --- a/src/kernel/core/sys.c +++ b/src/kernel/core/sys.c @@ -1,6 +1,9 @@ #include "sys.h" #include "monitor.h" +/* These four functions are wrappers around ASM operations. + These functions are used when comunicating with the system hardware. */ + void outb(uint16_t port, uint8_t value) { asm volatile("outb %1, %0" : : "dN"(port), "a"(value)); } @@ -21,14 +24,24 @@ uint16_t inw(uint16_t port) { return ret; } +/* These two functions stop the system, reporting an error message, because something bad happenned. */ + void panic(char* message, char* file, int line) { - monitor_write("\n>> PANIC: >>"); - monitor_write(message); monitor_write("<< at "); monitor_write(file); - monitor_write(":"); monitor_writeDec(line); - monitor_write("\nSystem halted -_-'"); + monitor_write("\n\nPANIC:\t\t"); monitor_write(message); + monitor_write("\n File:\t\t"); monitor_write(file); monitor_put(':'); monitor_writeDec(line); + monitor_write("\n\t\tSystem halted -_-'\n"); + asm volatile("cli; hlt"); +} + +void panic_assert(char* assertion, char* file, int line) { + monitor_write("\n\nASSERT FAILED:\t"); monitor_write(assertion); + monitor_write("\n File:\t\t"); monitor_write(file); monitor_put(':'); monitor_writeDec(line); + monitor_write("\n\t\tSystem halted -_-'\n"); asm volatile("cli; hlt"); } +/* Global system mutex. See comments in sys.h. */ + static uint32_t if_locks = 1; void cli() { |