diff --git a/headers/private/kernel/arch/vm.h b/headers/private/kernel/arch/vm.h index b7919b6c63..315e302c5c 100644 --- a/headers/private/kernel/arch/vm.h +++ b/headers/private/kernel/arch/vm.h @@ -1,4 +1,7 @@ /* +** Copyright 2002-2004, The Haiku Team. All rights reserved. +** Distributed under the terms of the Haiku License. +** ** Copyright 2001-2002, Travis Geiselbrecht. All rights reserved. ** Distributed under the terms of the NewOS License. */ @@ -13,9 +16,9 @@ extern "C" { #endif -int arch_vm_init(struct kernel_args *ka); -int arch_vm_init2(struct kernel_args *ka); -int arch_vm_init_endvm(struct kernel_args *ka); +status_t arch_vm_init(struct kernel_args *args); +status_t arch_vm_init_post_area(struct kernel_args *args); +status_t arch_vm_init_end(struct kernel_args *args); void arch_vm_aspace_swap(vm_address_space *aspace); #ifdef __cplusplus diff --git a/headers/private/kernel/arch/vm_translation_map.h b/headers/private/kernel/arch/vm_translation_map.h index 28351caa22..13c530c4e1 100644 --- a/headers/private/kernel/arch/vm_translation_map.h +++ b/headers/private/kernel/arch/vm_translation_map.h @@ -1,4 +1,7 @@ /* +** Copyright 2002-2004, The Haiku Team. All rights reserved. +** Distributed under the terms of the Haiku License. +** ** Copyright 2001-2002, Travis Geiselbrecht. All rights reserved. ** Distributed under the terms of the NewOS License. */ @@ -13,13 +16,16 @@ extern "C" { #endif -int vm_translation_map_create(vm_translation_map *new_map, bool kernel); -int vm_translation_map_module_init(struct kernel_args *ka); -int vm_translation_map_module_init2(struct kernel_args *ka); -void vm_translation_map_module_init_post_sem(struct kernel_args *ka); +status_t arch_vm_translation_map_init_map(vm_translation_map *map, bool kernel); +status_t arch_vm_translation_map_init_kernel_map_post_sem(vm_translation_map *map); + +status_t arch_vm_translation_map_init(struct kernel_args *args); +status_t arch_vm_translation_map_init_post_area(struct kernel_args *args); +status_t arch_vm_translation_map_init_post_sem(struct kernel_args *args); + // quick function to map a page in regardless of map context. Used in VM initialization, // before most vm data structures exist -status_t vm_translation_map_quick_map(struct kernel_args *ka, addr_t va, addr_t pa, +status_t arch_vm_translation_map_early_map(struct kernel_args *args, addr_t va, addr_t pa, uint8 attributes, addr_t (*get_free_page)(struct kernel_args *)); #ifdef __cplusplus diff --git a/headers/private/kernel/vm.h b/headers/private/kernel/vm.h index d7787c8401..24263c8fb0 100755 --- a/headers/private/kernel/vm.h +++ b/headers/private/kernel/vm.h @@ -1,4 +1,7 @@ /* +** Copyright 2002-2004, The Haiku Team. All rights reserved. +** Distributed under the terms of the Haiku License. +** ** Copyright 2001-2002, Travis Geiselbrecht. All rights reserved. ** Distributed under the terms of the NewOS License. */ @@ -20,11 +23,12 @@ extern "C" { #endif //void vm_dump_areas(vm_address_space *aspace); -status_t vm_init(kernel_args *ka); -status_t vm_init_postsem(struct kernel_args *ka); -status_t vm_init_postthread(struct kernel_args *ka); +status_t vm_init(kernel_args *args); +status_t vm_init_post_sem(struct kernel_args *args); +status_t vm_init_post_thread(struct kernel_args *args); status_t vm_aspace_init(void); status_t vm_aspace_init_post_sem(void); +void vm_free_unused_boot_loader_range(addr_t start, addr_t end); void vm_delete_aspace(vm_address_space *aspace); status_t vm_create_aspace(const char *name, addr base, addr size, bool kernel, vm_address_space **_aspace); diff --git a/headers/private/kernel/vm_page.h b/headers/private/kernel/vm_page.h index c24a27d337..be15588dfb 100755 --- a/headers/private/kernel/vm_page.h +++ b/headers/private/kernel/vm_page.h @@ -1,4 +1,7 @@ /* +** Copyright 2002-2004, The Haiku Team. All rights reserved. +** Distributed under the terms of the Haiku License. +** ** Copyright 2001-2002, Travis Geiselbrecht. All rights reserved. ** Distributed under the terms of the NewOS License. */ @@ -16,16 +19,16 @@ struct kernel_args; extern "C" { #endif -int vm_page_init(struct kernel_args *ka); -int vm_page_init2(struct kernel_args *ka); -int vm_page_init_postthread(struct kernel_args *ka); +status_t vm_page_init(struct kernel_args *args); +status_t vm_page_init_post_area(struct kernel_args *args); +status_t vm_page_init_post_thread(struct kernel_args *args); -int vm_mark_page_inuse(addr_t page); -int vm_mark_page_range_inuse(addr_t startPage, addr_t len); -int vm_page_set_state(vm_page *page, int state); +status_t vm_mark_page_inuse(addr_t page); +status_t vm_mark_page_range_inuse(addr_t startPage, addr_t length); +status_t vm_page_set_state(vm_page *page, int state); vm_page *vm_page_allocate_page(int state); -vm_page *vm_page_allocate_page_run(int state, addr_t len); +vm_page *vm_page_allocate_page_run(int state, addr_t length); vm_page *vm_page_allocate_specific_page(addr_t page_num, int state); vm_page *vm_lookup_page(addr_t page_num); diff --git a/headers/private/kernel/vm_priv.h b/headers/private/kernel/vm_priv.h index 68358d67a0..89a4e7f91c 100755 --- a/headers/private/kernel/vm_priv.h +++ b/headers/private/kernel/vm_priv.h @@ -1,4 +1,7 @@ /* +** Copyright 2002-2004, The Haiku Team. All rights reserved. +** Distributed under the terms of the Haiku License. +** ** Copyright 2001-2002, Travis Geiselbrecht. All rights reserved. ** Distributed under the terms of the NewOS License. */ @@ -34,7 +37,7 @@ #define PAGE_PRESENT 256 // Should only be used by vm internals -int vm_page_fault(addr_t address, addr_t fault_address, bool is_write, bool is_user, addr_t *newip); +int vm_page_fault(addr_t address, addr_t faultAddress, bool isWrite, bool isUser, addr_t *newip); void vm_increase_max_commit(addr_t delta); int vm_daemon_init(void); @@ -46,8 +49,8 @@ vm_address_space *vm_aspace_walk_next(struct hash_iterator *i); addr_t vm_page_num_pages(void); addr_t vm_page_num_free_pages(void); -// allocates memory from the ka structure -addr_t vm_alloc_from_ka_struct(kernel_args *ka, unsigned int size, int lock); +// allocates memory from the kernel_args structure +addr_t vm_alloc_from_kernel_args(kernel_args *args, size_t size, uint32 lock); #endif /* _KERNEL_VM_PRIV_H */ diff --git a/headers/private/kernel/vm_translation_map.h b/headers/private/kernel/vm_translation_map.h index f06b4aaa73..dd680e623b 100755 --- a/headers/private/kernel/vm_translation_map.h +++ b/headers/private/kernel/vm_translation_map.h @@ -1,4 +1,7 @@ /* +** Copyright 2002-2004, The Haiku Team. All rights reserved. +** Distributed under the terms of the Haiku License. +** ** Copyright 2001-2002, Travis Geiselbrecht. All rights reserved. ** Distributed under the terms of the NewOS License. */ @@ -13,17 +16,17 @@ struct kernel_args; -typedef struct vm_translation_map_struct { - struct vm_translation_map_struct *next; - struct vm_translation_map_ops_struct *ops; - recursive_lock lock; - int map_count; - struct vm_translation_map_arch_info_struct *arch_data; +typedef struct vm_translation_map { + struct vm_translation_map *next; + struct vm_translation_map_ops *ops; + recursive_lock lock; + int32 map_count; + struct vm_translation_map_arch_info *arch_data; } vm_translation_map; // table of operations the vm may want to do to this mapping -typedef struct vm_translation_map_ops_struct { +typedef struct vm_translation_map_ops { void (*destroy)(vm_translation_map *); status_t (*lock)(vm_translation_map*); status_t (*unlock)(vm_translation_map*); @@ -34,14 +37,10 @@ typedef struct vm_translation_map_ops_struct { status_t (*protect)(vm_translation_map *map, addr_t base, addr_t top, uint32 attributes); status_t (*clear_flags)(vm_translation_map *map, addr_t va, uint32 flags); void (*flush)(vm_translation_map *map); - status_t (*get_physical_page)(addr_t physical_address, addr_t *out_virtual_address, uint32 flags); - status_t (*put_physical_page)(addr_t virtual_address); + status_t (*get_physical_page)(addr_t physicalAddress, addr_t *_virtualAddress, uint32 flags); + status_t (*put_physical_page)(addr_t virtualAddress); } vm_translation_map_ops; -// ToDo: fix this -// unlike the usual habit, the VM translation map functions are -// arch-specific but do not have the arch_ prefix. #include #endif /* KERNEL_VM_TRANSLATION_MAP_H */ -