From 3983a157056f10651f120cf39c5d3637aa956903 Mon Sep 17 00:00:00 2001 From: Michal Idziorek Date: Fri, 17 Oct 2014 01:00:27 +0200 Subject: added simple syscall interface --- kernel/interrupts.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'kernel/interrupts.c') diff --git a/kernel/interrupts.c b/kernel/interrupts.c index f5bd18f..56fa09f 100644 --- a/kernel/interrupts.c +++ b/kernel/interrupts.c @@ -9,6 +9,7 @@ void int_clock_handler(); void int_kb_handler(); +void int_syscall_handler(); void int_install_ir(int irq, uint16_t flags, uint16_t sel, void *addr); void int_default_handler(); void mouse_handler(); @@ -82,6 +83,22 @@ void int_irq16(){ X86_IRQ_BEGIN panic(FOOLOS_MODULE_NAME,"Coprocessor error"); void int_irq17(){ X86_IRQ_BEGIN panic(FOOLOS_MODULE_NAME,"Alignment Check"); X86_IRQ_END } void int_irq18(){ X86_IRQ_BEGIN panic(FOOLOS_MODULE_NAME,"Machine Check"); X86_IRQ_END } +// +int example_syscall(int x,int y) +{ + log(FOOLOS_MODULE_NAME,FOOLOS_LOG_INFO,"example syscall called with %d + %d",x,y); + return x+y; + +} + +int example_syscall_2(int x,int y) +{ + log(FOOLOS_MODULE_NAME,FOOLOS_LOG_INFO,"example syscall 2 called with %d - %d",x,y); + return x-y; +} + +// + //set a handler for a specific interrupt void int_install_ir(int irq, uint16_t flags, uint16_t sel, void *addr) { @@ -145,6 +162,9 @@ void int_init(uint16_t sel) //mouse int_install_ir(44, 0b10001110, 0x08,&mouse_handler); + //system calls + int_install_ir(0x80, 0b10001110, 0x08,&int_syscall_handler); + int_install(); -- cgit v1.2.3