xref: /haiku/headers/private/kernel/arch/vm_translation_map.h (revision 002f37b0cca92e4cf72857c72ac95db5a8b09615)
1 /*
2 ** Copyright 2002-2010, The Haiku Team. All rights reserved.
3 ** Distributed under the terms of the Haiku License.
4 **
5 ** Copyright 2001-2002, Travis Geiselbrecht. All rights reserved.
6 ** Distributed under the terms of the NewOS License.
7 */
8 #ifndef KERNEL_ARCH_VM_TRANSLATION_MAP_H
9 #define KERNEL_ARCH_VM_TRANSLATION_MAP_H
10 
11 
12 #include <vm/VMTranslationMap.h>
13 
14 
15 #ifdef __cplusplus
16 extern "C" {
17 #endif
18 
19 status_t arch_vm_translation_map_create_map(bool kernel,
20 	VMTranslationMap** _map);
21 
22 status_t arch_vm_translation_map_init(struct kernel_args *args,
23 	VMPhysicalPageMapper** _physicalPageMapper);
24 status_t arch_vm_translation_map_init_post_area(struct kernel_args *args);
25 status_t arch_vm_translation_map_init_post_sem(struct kernel_args *args);
26 
27 // Quick function to map a page in regardless of map context. Used in VM
28 // initialization before most vm data structures exist.
29 status_t arch_vm_translation_map_early_map(struct kernel_args *args, addr_t va,
30 	phys_addr_t pa, uint8 attributes,
31 	phys_addr_t (*get_free_page)(struct kernel_args *));
32 
33 bool arch_vm_translation_map_is_kernel_page_accessible(addr_t virtualAddress,
34 	uint32 protection);
35 
36 #ifdef __cplusplus
37 }
38 #endif
39 
40 #include <arch_vm_translation_map.h>
41 
42 #endif	/* KERNEL_ARCH_VM_TRANSLATION_MAP_H */
43 
44