Browse Source

feat(syscall): add syscall crash

greatbridf 2 years ago
parent
commit
9c72ff3f2c
2 changed files with 10 additions and 1 deletions
  1. 2 0
      include/kernel/syscall.hpp
  2. 8 1
      src/kernel/syscall.cpp

+ 2 - 0
include/kernel/syscall.hpp

@@ -6,4 +6,6 @@
 // return value is stored in %eax and %edx
 typedef void (*syscall_handler)(interrupt_stack* data);
 
+#define syscall(eax) asm volatile("movl %0, %%eax\n\tint $0x80"::"r"(eax):"eax","edx")
+
 void init_syscall(void);

+ 8 - 1
src/kernel/syscall.cpp

@@ -49,12 +49,19 @@ void _syscall_sleep(interrupt_stack* data)
     do_scheduling(data);
 }
 
+void _syscall_crash(interrupt_stack*)
+{
+    tty_print(console, "\nan error occurred while executing command\n");
+    asm_cli();
+    asm_hlt();
+}
+
 void init_syscall(void)
 {
     syscall_handlers[0] = _syscall_fork;
     syscall_handlers[1] = _syscall_write;
     syscall_handlers[2] = _syscall_sleep;
-    syscall_handlers[3] = _syscall_not_impl;
+    syscall_handlers[3] = _syscall_crash;
     syscall_handlers[4] = _syscall_not_impl;
     syscall_handlers[5] = _syscall_not_impl;
     syscall_handlers[6] = _syscall_not_impl;