74785e79db
arch_vm_aspace_swap(). * The x86 implementation does now maintain a bit mask per vm_translation_map_arch_info indicating on which CPUs the address space is active. This allows flush_tmap() to avoid ICI for user address spaces when the team isn't currently running on any other CPU. In this context ICI is relatively expensive, particularly since we map most pages via vm_map_page() and therefore invoke flush_tmap() pretty much for every single page. This optimization speeds up a "hello world" compilation about 20% on my machine (KDEBUG turned off, freshly booted), but interestingly it has virtually no effect on the "-j2" haiku build time. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27912 a95241bf-73f2-0310-859d-f6bbb57e9c96
44 lines
1.3 KiB
C
44 lines
1.3 KiB
C
/*
|
|
* Copyright 2002-2008, Axel Dörfler, axeld@pinc-software.de. All rights reserved.
|
|
* Distributed under the terms of the MIT License.
|
|
*
|
|
* Copyright 2001-2002, Travis Geiselbrecht. All rights reserved.
|
|
* Distributed under the terms of the NewOS License.
|
|
*/
|
|
#ifndef _KERNEL_VM_ADDRESS_SPACE_H
|
|
#define _KERNEL_VM_ADDRESS_SPACE_H
|
|
|
|
|
|
#include <OS.h>
|
|
|
|
|
|
struct kernel_args;
|
|
struct vm_address_space;
|
|
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
status_t vm_address_space_init(void);
|
|
status_t vm_address_space_init_post_sem(void);
|
|
|
|
void vm_delete_address_space(struct vm_address_space *aspace);
|
|
status_t vm_create_address_space(team_id id, addr_t base, addr_t size,
|
|
bool kernel, struct vm_address_space **_aspace);
|
|
status_t vm_delete_areas(struct vm_address_space *aspace);
|
|
struct vm_address_space *vm_get_kernel_address_space(void);
|
|
struct vm_address_space *vm_kernel_address_space(void);
|
|
team_id vm_kernel_address_space_id(void);
|
|
struct vm_address_space *vm_get_current_user_address_space(void);
|
|
team_id vm_current_user_address_space_id(void);
|
|
struct vm_address_space *vm_get_address_space(team_id team);
|
|
void vm_put_address_space(struct vm_address_space *aspace);
|
|
#define vm_swap_address_space(from, to) arch_vm_aspace_swap(from, to)
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif /* _KERNEL_VM_ADDRESS_SPACE_H */
|