From f236d166058c413b55a4a58e78b2ee382f074e27 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Axel=20D=C3=B6rfler?= Date: Wed, 20 Aug 2003 15:47:52 +0000 Subject: [PATCH] Removed the vm_get_region_info() call and the vm_region_info structure - they are now replaced by get_area_info() and the area_info structure. get_area_info() still misses some pieces, though. Added all missing VM user/kernel syscalls. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@4352 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- headers/private/kernel/ksyscalls.h | 10 +++++++--- headers/private/kernel/syscalls.h | 15 ++++++++++----- headers/private/kernel/vm.h | 16 ++++++++++------ headers/private/kernel/vm_types.h | 11 ----------- 4 files changed, 27 insertions(+), 25 deletions(-) diff --git a/headers/private/kernel/ksyscalls.h b/headers/private/kernel/ksyscalls.h index fbf0449d94..1f3999c05f 100755 --- a/headers/private/kernel/ksyscalls.h +++ b/headers/private/kernel/ksyscalls.h @@ -39,11 +39,11 @@ enum { SYSCALL_WAIT_ON_THREAD, SYSCALL_WAIT_ON_TEAM, SYSCALL_CREATE_AREA, - SYSCALL_VM_CLONE_REGION, /* 30 */ + SYSCALL_CLONE_AREA, /* 30 */ SYSCALL_VM_MAP_FILE, SYSCALL_DELETE_AREA, - SYSCALL_VM_GET_REGION_INFO, - SYSCALL_VM_FIND_REGION_BY_NAME, + SYSCALL_GET_AREA_INFO, + SYSCALL_FIND_AREA, SYSCALL_SPAWN_THREAD, SYSCALL_KILL_THREAD, SYSCALL_SUSPEND_THREAD, @@ -131,6 +131,10 @@ enum { SYSCALL_STOP_WATCHING, SYSCALL_STOP_NOTIFYING, /* 120 */ SYSCALL_SET_THREAD_PRIORITY, + SYSCALL_GET_NEXT_AREA_INFO, + SYSCALL_SET_AREA_PROTECTION, + SYSCALL_RESIZE_AREA, + SYSCALL_AREA_FOR, /* 125 */ }; int syscall_dispatcher(unsigned long call_num, void *arg_buffer, uint64 *call_ret); diff --git a/headers/private/kernel/syscalls.h b/headers/private/kernel/syscalls.h index 83f763206e..b47a685442 100644 --- a/headers/private/kernel/syscalls.h +++ b/headers/private/kernel/syscalls.h @@ -79,13 +79,18 @@ status_t sys_stop_watching(dev_t device, ino_t node, uint32 flags, // area functions area_id _kern_create_area(const char *name, void **address, uint32 addressSpec, - size_t size, uint32 lock, uint32 protection); -region_id sys_vm_clone_region(const char *name, void **address, int addr_type, - region_id source_region, int mapping, int lock); + size_t size, uint32 lock, uint32 protection); region_id sys_vm_map_file(const char *name, void **address, int addr_type, - addr size, int lock, int mapping, const char *path, off_t offset); + addr size, int lock, int mapping, const char *path, off_t offset); status_t _kern_delete_area(area_id area); -int sys_vm_get_region_info(region_id id, vm_region_info *info); +area_id _kern_area_for(void *address); +area_id _kern_find_area(const char *name); +status_t _kern_get_area_info(area_id area, area_info *info); +status_t _kern_get_next_area_info(team_id team, int32 *cookie, area_info *info); +status_t _kern_resize_area(area_id area, size_t newSize); +status_t _kern_set_area_protection(area_id area, uint32 newProtection); +area_id _kern_clone_area(const char *name, void **_address, uint32 addressSpec, + uint32 protection, area_id sourceArea); /* kernel port functions */ port_id sys_port_create(int32 queue_length, const char *name); diff --git a/headers/private/kernel/vm.h b/headers/private/kernel/vm.h index 6c8cf90900..75a3acf00b 100755 --- a/headers/private/kernel/vm.h +++ b/headers/private/kernel/vm.h @@ -53,7 +53,6 @@ region_id vm_clone_region(aspace_id aid, char *name, void **address, int addr_ty region_id source_region, int mapping, int lock); int vm_delete_region(aspace_id aid, region_id id); region_id vm_find_region_by_name(aspace_id aid, const char *name); -int vm_get_region_info(region_id id, vm_region_info *info); int vm_get_page_mapping(aspace_id aid, addr vaddr, addr *paddr); int vm_get_physical_page(addr paddr, addr *vaddr, int flags); @@ -66,13 +65,18 @@ int user_strlcpy(char *to, const char *from, size_t size); int user_memset(void *s, char c, size_t count); area_id _user_create_area(const char *name, void **address, uint32 addressSpec, - size_t size, uint32 lock, uint32 protection); + size_t size, uint32 lock, uint32 protection); status_t _user_delete_area(area_id area); -region_id user_vm_clone_region(char *uname, void **uaddress, int addr_type, - region_id source_region, int mapping, int lock); region_id user_vm_map_file(char *uname, void **uaddress, int addr_type, - addr size, int lock, int mapping, const char *upath, off_t offset); -int user_vm_get_region_info(region_id id, vm_region_info *uinfo); + addr size, int lock, int mapping, const char *upath, off_t offset); +area_id _user_area_for(void *address); +area_id _user_find_area(const char *name); +status_t _user_get_area_info(area_id area, area_info *info); +status_t _user_get_next_area_info(team_id team, int32 *cookie, area_info *info); +status_t _user_resize_area(area_id area, size_t newSize); +status_t _user_set_area_protection(area_id area, uint32 newProtection); +area_id _user_clone_area(const char *name, void **_address, uint32 addressSpec, + uint32 protection, area_id sourceArea); region_id find_region_by_name(const char *); region_id find_region_by_address (addr); diff --git a/headers/private/kernel/vm_types.h b/headers/private/kernel/vm_types.h index c6d246c138..9939b1e758 100644 --- a/headers/private/kernel/vm_types.h +++ b/headers/private/kernel/vm_types.h @@ -69,17 +69,6 @@ typedef struct vm_cache { unsigned int scan_skip : 1; } vm_cache; -// info about a region that external entities may want to know -// used in vm_get_region_info() -typedef struct vm_region_info { - region_id id; - addr base; - addr size; - int lock; - int wiring; - char name[SYS_MAX_OS_NAME_LEN]; -} vm_region_info; - // vm region typedef struct vm_region { char *name;