From 0fd7b4981926aceea3e17bb0c182850affafdc32 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Axel=20D=C3=B6rfler?= Date: Wed, 20 Aug 2003 15:52:58 +0000 Subject: [PATCH] Added/changed VM syscalls to the BeOS compatible ones. Reordered the syscalls a bit (in functional groups), not completely, though. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@4354 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/kernel/core/syscalls.c | 65 ++++++++++++++++++++++++-------------- 1 file changed, 41 insertions(+), 24 deletions(-) diff --git a/src/kernel/core/syscalls.c b/src/kernel/core/syscalls.c index 3b667aa8c6..5c957511e6 100644 --- a/src/kernel/core/syscalls.c +++ b/src/kernel/core/syscalls.c @@ -191,6 +191,9 @@ int syscall_dispatcher(unsigned long call_num, void *arg_buffer, uint64 *call_re case SYSCALL_SNOOZE_ETC: *call_ret = user_snooze_etc((bigtime_t)INT32TOINT64(arg0, arg1), (int)arg2, (int32)arg3); break; + + /* semaphore syscalls */ + case SYSCALL_SEM_CREATE: *call_ret = user_create_sem((int)arg0, (const char *)arg1); break; @@ -209,6 +212,44 @@ int syscall_dispatcher(unsigned long call_num, void *arg_buffer, uint64 *call_re case SYSCALL_SEM_RELEASE_ETC: *call_ret = user_release_sem_etc((sem_id)arg0, (int)arg1, (int)arg2); break; + + /* VM/area syscalls */ + + case SYSCALL_CREATE_AREA: + *call_ret = _user_create_area((char *)arg0, (void **)arg1, (uint32)arg2, + (size_t)arg3, (uint32)arg4, (uint32)arg5); + break; + case SYSCALL_CLONE_AREA: + *call_ret = _user_clone_area((char *)arg0, (void **)arg1, (uint32)arg2, + (uint32)arg3, (area_id)arg4); + break; + case SYSCALL_VM_MAP_FILE: + *call_ret = user_vm_map_file( + (char *)arg0, (void **)arg1, (int)arg2, + (addr)arg3, (int)arg4, (int)arg5, (const char *)arg6, + (off_t)INT32TOINT64(arg7, arg8)); + break; + case SYSCALL_FIND_AREA: + *call_ret = _user_find_area((const char *)arg0); + break; + case SYSCALL_DELETE_AREA: + *call_ret = _user_delete_area((area_id)arg0); + break; + case SYSCALL_GET_AREA_INFO: + *call_ret = _user_get_area_info((area_id)arg0, (area_info *)arg1); + break; + case SYSCALL_GET_NEXT_AREA_INFO: + *call_ret = _user_get_next_area_info((team_id)arg0, (int32 *)arg1, (area_info *)arg2); + break; + case SYSCALL_SET_AREA_PROTECTION: + *call_ret = _user_set_area_protection((area_id)arg0, (uint32)arg1); + break; + case SYSCALL_AREA_FOR: + *call_ret = _user_area_for((void *)arg0); + break; + + /* Thread/team syscalls */ + case SYSCALL_GET_CURRENT_THREAD_ID: *call_ret = thread_get_current_thread_id(); break; @@ -225,30 +266,6 @@ int syscall_dispatcher(unsigned long call_num, void *arg_buffer, uint64 *call_re case SYSCALL_WAIT_ON_TEAM: *call_ret = user_wait_for_team((team_id)arg0, (status_t *)arg1); break; - case SYSCALL_CREATE_AREA: - *call_ret = _user_create_area((char *)arg0, (void **)arg1, (uint32)arg2, - (size_t)arg3, (uint32)arg4, (uint32)arg5); - break; - case SYSCALL_VM_CLONE_REGION: - *call_ret = user_vm_clone_region( - (char *)arg0, (void **)arg1, (int)arg2, - (region_id)arg3, (int)arg4, (int)arg5); - break; - case SYSCALL_VM_MAP_FILE: - *call_ret = user_vm_map_file( - (char *)arg0, (void **)arg1, (int)arg2, - (addr)arg3, (int)arg4, (int)arg5, (const char *)arg6, - (off_t)INT32TOINT64(arg7, arg8)); - break; - case SYSCALL_VM_FIND_REGION_BY_NAME: - *call_ret = find_region_by_name((const char *)arg0); - break; - case SYSCALL_DELETE_AREA: - *call_ret = _user_delete_area((area_id)arg0); - break; - case SYSCALL_VM_GET_REGION_INFO: - *call_ret = user_vm_get_region_info((region_id)arg0, (vm_region_info *)arg1); - break; case SYSCALL_SPAWN_THREAD: *call_ret = user_spawn_thread((thread_func)arg0, (const char *)arg1, (int)arg2, (void *)arg3, (void *)arg4); break;