43,7 → 43,6 |
#include <ipc/sysipc.h> |
#include <synch/futex.h> |
#include <ddi/ddi.h> |
#include <security/cap.h> |
#include <syscall/copy.h> |
|
static __native sys_io(int fd, const void * buf, size_t count) { |
58,6 → 57,17 |
return count; |
} |
|
static __native sys_preempt_control(int enable) |
{ |
if (! cap_get(TASK) & CAP_PREEMPT_CONTROL) |
return EPERM; |
if (enable) |
preemption_enable(); |
else |
preemption_disable(); |
return 0; |
} |
|
/** Dispatch system call */ |
__native syscall_handler(__native a1, __native a2, __native a3, |
__native a4, __native id) |
71,7 → 81,8 |
syshandler_t syscall_table[SYSCALL_END] = { |
sys_io, |
sys_tls_set, |
|
sys_preempt_control, |
|
/* Thread and task related syscalls. */ |
sys_thread_create, |
sys_thread_exit, |
100,12 → 111,7 |
sys_ipc_register_irq, |
sys_ipc_unregister_irq, |
|
/* Capabilities related syscalls. */ |
sys_cap_grant, |
sys_cap_revoke, |
|
/* DDI related syscalls. */ |
sys_physmem_map, |
sys_iospace_enable, |
sys_preempt_control |
sys_iospace_enable |
}; |