bcc2c157a1
* Pulled the physical page mapping functions out of vm_translation_map into a new interface VMPhysicalPageMapper. * Renamed vm_translation_map to VMTranslationMap and made it a proper C++ class. The functions in the operations vector have become methods. * Added class GenericVMPhysicalPageMapper implementing VMPhysicalPageMapper as far as possible (without actually writing new code). * Adjusted the x86 and the PPC specifics accordingly (untested for the latter). For the other architectures the build is, I'm afraid, seriously broken. The next steps will modify and extend the VMTranslationMap interface, so that it will be possible to fix the bugs in vm_unmap_page[s]() and employ architecture specific optimizations. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35066 a95241bf-73f2-0310-859d-f6bbb57e9c96
43 lines
1.2 KiB
C
43 lines
1.2 KiB
C
/*
|
|
** Copyright 2002-2010, 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.
|
|
*/
|
|
#ifndef KERNEL_ARCH_VM_TRANSLATION_MAP_H
|
|
#define KERNEL_ARCH_VM_TRANSLATION_MAP_H
|
|
|
|
|
|
#include <vm/VMTranslationMap.h>
|
|
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
status_t arch_vm_translation_map_create_map(bool kernel,
|
|
VMTranslationMap** _map);
|
|
|
|
status_t arch_vm_translation_map_init(struct kernel_args *args,
|
|
VMPhysicalPageMapper** _physicalPageMapper);
|
|
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 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 *));
|
|
|
|
bool arch_vm_translation_map_is_kernel_page_accessible(addr_t virtualAddress,
|
|
uint32 protection);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#include <arch_vm_translation_map.h>
|
|
|
|
#endif /* KERNEL_ARCH_VM_TRANSLATION_MAP_H */
|
|
|