2019-12-29 16:39:30 +01:00
|
|
|
#include <kernel/syscall.h>
|
2020-02-24 00:05:27 +01:00
|
|
|
#include <kernel/util/debug.h>
|
2019-12-29 16:39:30 +01:00
|
|
|
|
2020-01-01 14:19:18 +01:00
|
|
|
static void sys_test(uint32_t a, uint32_t b, uint32_t c, uint32_t d)
|
|
|
|
{
|
|
|
|
kvram_clear();
|
|
|
|
printk(0, 0, "a = %#x", a);
|
|
|
|
printk(0, 1, "b = %#x", b);
|
|
|
|
printk(0, 2, "c = %#x", c);
|
|
|
|
printk(0, 3, "d = %#x", d);
|
|
|
|
kvram_display();
|
|
|
|
DBG_WAIT;
|
|
|
|
}
|
|
|
|
|
2020-02-05 21:09:39 +01:00
|
|
|
static const void *sys_handler[16] = {
|
2020-01-05 09:00:43 +01:00
|
|
|
// Kernel Test
|
2020-02-05 21:09:39 +01:00
|
|
|
sys_test, // test
|
2020-01-05 09:00:43 +01:00
|
|
|
|
|
|
|
// Process
|
2020-02-05 21:09:39 +01:00
|
|
|
sys_exit, // exit
|
|
|
|
sys_fexecve, // fexecve
|
|
|
|
sys_waitpid, // waitpid
|
2020-01-05 09:00:43 +01:00
|
|
|
|
|
|
|
// VFS
|
2020-02-05 21:09:39 +01:00
|
|
|
sys_read, // read
|
|
|
|
sys_write, // write
|
|
|
|
sys_open, // open
|
|
|
|
sys_close, // close
|
|
|
|
sys_lseek, // lseek
|
2020-01-01 14:19:18 +01:00
|
|
|
|
2020-01-05 09:00:43 +01:00
|
|
|
// Display
|
2020-02-05 21:09:39 +01:00
|
|
|
kvram_display, // kvram_display
|
|
|
|
kvram_clear, // kvram_clear
|
|
|
|
printk, // printk
|
|
|
|
kvram_ascii, // kvram_ascii
|
|
|
|
kvram_reverse, // kvram_reverse
|
|
|
|
kvram_scroll, // kvram_scroll
|
|
|
|
kvram_clr_str_area // kvram_clr_str_area
|
2019-12-29 16:39:30 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
void *sys_get_handler(int sysno)
|
|
|
|
{
|
2020-01-01 14:19:18 +01:00
|
|
|
// Check sysno validity
|
2020-02-05 21:09:39 +01:00
|
|
|
if (sysno < 0 || sysno >= 16)
|
2020-02-24 00:05:27 +01:00
|
|
|
return (NULL);
|
2020-01-01 14:19:18 +01:00
|
|
|
|
|
|
|
// DEBUG
|
2020-01-12 15:58:35 +01:00
|
|
|
/*kvram_clear();
|
2020-01-10 17:21:44 +01:00
|
|
|
printk(0, 0, "TRAPA ABI pre_handler !");
|
|
|
|
printk(0, 1, "sysno = %d", sysno);
|
|
|
|
printk(0, 2, "handler = %p", sys_handler[sysno]);
|
2020-01-01 14:19:18 +01:00
|
|
|
kvram_display();
|
|
|
|
DBG_WAIT;
|
2020-01-10 17:21:44 +01:00
|
|
|
DBG_WAIT;
|
2020-01-12 15:58:35 +01:00
|
|
|
DBG_WAIT;*/
|
2020-01-10 17:21:44 +01:00
|
|
|
|
2020-01-01 14:19:18 +01:00
|
|
|
// Return syscall
|
2019-12-29 16:39:30 +01:00
|
|
|
return ((void *)sys_handler[sysno]);
|
|
|
|
}
|