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:
parent
103501d9d7
commit
f236d16605
|
@ -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);
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -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;
|
||||||
|
|
Loading…
Reference in New Issue