2002-07-09 12:24:59 +00:00
|
|
|
/*
|
2008-07-16 23:36:25 +00:00
|
|
|
* Copyright 2002-2008, Haiku. All rights reserved.
|
2005-03-19 01:58:05 +00:00
|
|
|
* Distributed under the terms of the MIT License.
|
|
|
|
*
|
|
|
|
* Copyright 2001-2002, Travis Geiselbrecht. All rights reserved.
|
|
|
|
* Distributed under the terms of the NewOS License.
|
|
|
|
*/
|
2002-07-09 12:24:59 +00:00
|
|
|
#ifndef _KERNEL_VM_PRIV_H
|
|
|
|
#define _KERNEL_VM_PRIV_H
|
|
|
|
|
2007-09-27 12:21:33 +00:00
|
|
|
|
|
|
|
#include <vm_types.h>
|
|
|
|
|
2002-07-09 12:24:59 +00:00
|
|
|
|
2005-05-15 15:06:57 +00:00
|
|
|
// reserved area definitions
|
|
|
|
#define RESERVED_AREA_ID -1
|
|
|
|
#define RESERVED_AVOID_BASE 0x01
|
2004-06-10 02:01:59 +00:00
|
|
|
|
2004-06-08 08:24:53 +00:00
|
|
|
// page attributes (in addition to B_READ_AREA etc.)
|
2005-03-30 06:34:17 +00:00
|
|
|
#define PAGE_MODIFIED 0x1000
|
|
|
|
#define PAGE_ACCESSED 0x2000
|
|
|
|
#define PAGE_PRESENT 0x4000
|
2002-07-09 12:24:59 +00:00
|
|
|
|
2005-05-16 23:17:45 +00:00
|
|
|
|
|
|
|
#ifdef __cplusplus
|
|
|
|
extern "C" {
|
|
|
|
#endif
|
|
|
|
|
2002-07-09 12:24:59 +00:00
|
|
|
// Should only be used by vm internals
|
2007-09-03 15:41:14 +00:00
|
|
|
status_t vm_page_fault(addr_t address, addr_t faultAddress, bool isWrite,
|
|
|
|
bool isUser, addr_t *newip);
|
2004-11-03 17:24:41 +00:00
|
|
|
void vm_unreserve_memory(size_t bytes);
|
2008-07-22 20:36:32 +00:00
|
|
|
status_t vm_try_reserve_memory(size_t bytes, bigtime_t timeout);
|
2007-10-11 08:01:18 +00:00
|
|
|
void vm_schedule_page_scanner(uint32 target);
|
2004-11-03 17:24:41 +00:00
|
|
|
status_t vm_daemon_init(void);
|
2002-07-09 12:24:59 +00:00
|
|
|
|
2007-09-26 20:19:51 +00:00
|
|
|
const char *page_state_to_string(int state);
|
|
|
|
// for debugging purposes only
|
|
|
|
|
2005-05-16 23:17:45 +00:00
|
|
|
#ifdef __cplusplus
|
|
|
|
}
|
|
|
|
#endif
|
|
|
|
|
2004-06-10 02:01:59 +00:00
|
|
|
#endif /* _KERNEL_VM_PRIV_H */
|
2002-07-09 12:24:59 +00:00
|
|
|
|