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
This commit is contained in:
Axel Dörfler 2003-08-20 15:47:52 +00:00
parent 103501d9d7
commit f236d16605
4 changed files with 27 additions and 25 deletions

View File

@ -39,11 +39,11 @@ enum {
SYSCALL_WAIT_ON_THREAD, SYSCALL_WAIT_ON_THREAD,
SYSCALL_WAIT_ON_TEAM, SYSCALL_WAIT_ON_TEAM,
SYSCALL_CREATE_AREA, SYSCALL_CREATE_AREA,
SYSCALL_VM_CLONE_REGION, /* 30 */ SYSCALL_CLONE_AREA, /* 30 */
SYSCALL_VM_MAP_FILE, SYSCALL_VM_MAP_FILE,
SYSCALL_DELETE_AREA, SYSCALL_DELETE_AREA,
SYSCALL_VM_GET_REGION_INFO, SYSCALL_GET_AREA_INFO,
SYSCALL_VM_FIND_REGION_BY_NAME, SYSCALL_FIND_AREA,
SYSCALL_SPAWN_THREAD, SYSCALL_SPAWN_THREAD,
SYSCALL_KILL_THREAD, SYSCALL_KILL_THREAD,
SYSCALL_SUSPEND_THREAD, SYSCALL_SUSPEND_THREAD,
@ -131,6 +131,10 @@ enum {
SYSCALL_STOP_WATCHING, SYSCALL_STOP_WATCHING,
SYSCALL_STOP_NOTIFYING, /* 120 */ SYSCALL_STOP_NOTIFYING, /* 120 */
SYSCALL_SET_THREAD_PRIORITY, 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); int syscall_dispatcher(unsigned long call_num, void *arg_buffer, uint64 *call_ret);

View File

@ -79,13 +79,18 @@ status_t sys_stop_watching(dev_t device, ino_t node, uint32 flags,
// area functions // area functions
area_id _kern_create_area(const char *name, void **address, uint32 addressSpec, area_id _kern_create_area(const char *name, void **address, uint32 addressSpec,
size_t size, uint32 lock, uint32 protection); 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);
region_id sys_vm_map_file(const char *name, void **address, int addr_type, 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); 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 */ /* kernel port functions */
port_id sys_port_create(int32 queue_length, const char *name); port_id sys_port_create(int32 queue_length, const char *name);

View File

@ -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); region_id source_region, int mapping, int lock);
int vm_delete_region(aspace_id aid, region_id id); int vm_delete_region(aspace_id aid, region_id id);
region_id vm_find_region_by_name(aspace_id aid, const char *name); 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_page_mapping(aspace_id aid, addr vaddr, addr *paddr);
int vm_get_physical_page(addr paddr, addr *vaddr, int flags); 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); int user_memset(void *s, char c, size_t count);
area_id _user_create_area(const char *name, void **address, uint32 addressSpec, 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); 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, 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); 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); 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_name(const char *);
region_id find_region_by_address (addr); region_id find_region_by_address (addr);

View File

@ -69,17 +69,6 @@ typedef struct vm_cache {
unsigned int scan_skip : 1; unsigned int scan_skip : 1;
} vm_cache; } 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 // vm region
typedef struct vm_region { typedef struct vm_region {
char *name; char *name;