diff --git a/tasks/libl4/include/l4lib/arch-arm/syscalls.h b/tasks/libl4/include/l4lib/arch-arm/syscalls.h index 5fbbb51..09b1c62 100644 --- a/tasks/libl4/include/l4lib/arch-arm/syscalls.h +++ b/tasks/libl4/include/l4lib/arch-arm/syscalls.h @@ -40,9 +40,9 @@ typedef int (*__l4_ipc_t)(l4id_t to, l4id_t from, u32 flags); extern __l4_ipc_t __l4_ipc; int l4_ipc(l4id_t to, l4id_t from, u32 flags); -typedef int (*__l4_kread_t)(u32 rd, void *addr); -extern __l4_kread_t __l4_kread; -int l4_kread(u32 rd, void *addr); +typedef int (*__l4_capability_control_t)(unsigned int req, unsigned int flags, void *buf); +extern __l4_capability_control_t __l4_capability_control; +int l4_capability_control(unsigned int req, unsigned int flags, void *buf); typedef int (*__l4_map_t)(void *phys, void *virt, u32 npages, u32 flags, l4id_t tid); @@ -70,9 +70,9 @@ typedef int (*__l4_exchange_registers_t)(void *exregs_struct, l4id_t tid); extern __l4_exchange_registers_t __l4_exchange_registers; int l4_exchange_registers(void *exregs_struct, l4id_t tid); -typedef int (*__l4_kmem_control_t)(unsigned long pfn, int npages, int grant); -extern __l4_kmem_control_t __l4_kmem_control; -int l4_kmem_control(unsigned long pfn, int npages, int grant); +typedef int (*__l4_container_control_t)(unsigned int req, unsigned int flags, void *buf); +extern __l4_container_control_t __l4_container_control; +int l4_container_control(unsigned int req, unsigned int flags, void *buf); typedef int (*__l4_time_t)(void *timeval, int set); extern __l4_time_t __l4_time; diff --git a/tasks/libl4/src/arm/syscalls.S b/tasks/libl4/src/arm/syscalls.S index 4545f81..e15a695 100644 --- a/tasks/libl4/src/arm/syscalls.S +++ b/tasks/libl4/src/arm/syscalls.S @@ -38,18 +38,18 @@ BEGIN_PROC(l4_getid) END_PROC(l4_getid) /* - * Reads data from the kernel into given buffer. Data is defined by request descriptor. - * @r0 = request descriptor, @r1 = buffer address. + * Reads/manipulates capabilities of a thread, particularly a pager. + * @r0 = request type, @r1 = request flags, @r2 = io buffer ptr */ -BEGIN_PROC(l4_kread) - ldr r12, =__l4_kread +BEGIN_PROC(l4_capability_control) + ldr r12, =__l4_capability_control ldr pc, [r12] @ Jump into the SWI /* * The LR_USR points at the return address of this function. The system * call return path directly jumps to LR_USR so we don't even need a * return instruction here. */ -END_PROC(l4_kread) +END_PROC(l4_capability_control) /* * For clone() we need special assembler handling @@ -137,17 +137,16 @@ BEGIN_PROC(l4_unmap) END_PROC(l4_unmap) /* - * System call that grants a set of pages to the kernel. - * @r0 = physical pfn, @r1 = number of pages, @r2 = whether to - * grant or reclaim kernel memory. grant = 1, reclaim = 0. + * System call that controls containers and their parameters. + * @r0 = request type, @r1 = request flags, @r2 = io buffer ptr */ -BEGIN_PROC(l4_kmem_control) +BEGIN_PROC(l4_container_control) stmfd sp!, {lr} - ldr r12, =__l4_kmem_control + ldr r12, =__l4_container_control mov lr, pc ldr pc, [r12] ldmfd sp!, {pc} @ Restore original lr and return. -END_PROC(l4_kmem_control) +END_PROC(l4_container_control) /* * System call that gets or sets the time info structure. diff --git a/tasks/libl4/src/init.c b/tasks/libl4/src/init.c index 8f9e6e4..0492f4c 100644 --- a/tasks/libl4/src/init.c +++ b/tasks/libl4/src/init.c @@ -14,14 +14,14 @@ __l4_ipc_t __l4_ipc = 0; __l4_map_t __l4_map = 0; __l4_unmap_t __l4_unmap = 0; -__l4_kread_t __l4_kread = 0; __l4_getid_t __l4_getid = 0; __l4_thread_switch_t __l4_thread_switch = 0; __l4_thread_control_t __l4_thread_control = 0; __l4_ipc_control_t __l4_ipc_control = 0; __l4_space_control_t __l4_space_control = 0; __l4_exchange_registers_t __l4_exchange_registers = 0; -__l4_kmem_control_t __l4_kmem_control = 0; +__l4_container_control_t __l4_container_control = 0; +__l4_capability_control_t __l4_capability_control = 0; __l4_time_t __l4_time = 0; __l4_mutex_control_t __l4_mutex_control = 0; @@ -45,7 +45,6 @@ void __l4_init(void) __l4_ipc = (__l4_ipc_t)kip->ipc; __l4_map = (__l4_map_t)kip->map; __l4_unmap = (__l4_unmap_t)kip->unmap; - __l4_kread = (__l4_kread_t)kip->kread; __l4_getid = (__l4_getid_t)kip->getid; __l4_thread_switch = (__l4_thread_switch_t)kip->thread_switch; __l4_thread_control= (__l4_thread_control_t)kip->thread_control; @@ -53,7 +52,10 @@ void __l4_init(void) __l4_space_control= (__l4_space_control_t)kip->space_control; __l4_exchange_registers = (__l4_exchange_registers_t)kip->exchange_registers; - __l4_kmem_control = (__l4_kmem_control_t)kip->kmem_control; + __l4_capability_control = + (__l4_capability_control_t)kip->capability_control; + __l4_container_control = + (__l4_container_control_t)kip->container_control; __l4_time = (__l4_time_t)kip->time; __l4_mutex_control = (__l4_mutex_control_t)kip->mutex_control; }