mirror of
https://review.haiku-os.org/haiku
synced 2025-01-23 14:54:49 +01:00
8d12bd1370
dedicated functions. * Introduced gMappedPagesCount variable which counts the total number of physical pages that are mapped. * Added vm_page_get_stats() which fills in the memory related part of the system_info structure. Used and cached pages are computed differently, now. The "available" (== not committed) memory is no longer used for the computation as it doesn't say anything about the actually used/free pages (with swap support enabled it is even less meaningful, since we first commit swap space when possible). We do also consider the memory used by the block cache as cached pages, now. All in all these changes should fix the memory statistics reported by get_system_info(), IOW bug #2574. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26837 a95241bf-73f2-0310-859d-f6bbb57e9c96
63 lines
1.9 KiB
C
63 lines
1.9 KiB
C
/*
|
|
* Copyright 2002-2008, Axel Dörfler, axeld@pinc-software.de.
|
|
* 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_PAGE_H
|
|
#define _KERNEL_VM_PAGE_H
|
|
|
|
|
|
#include <vm.h>
|
|
|
|
|
|
struct kernel_args;
|
|
|
|
extern int32 gMappedPagesCount;
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
void vm_page_init_num_pages(struct kernel_args *args);
|
|
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);
|
|
|
|
status_t vm_mark_page_inuse(addr_t page);
|
|
status_t vm_mark_page_range_inuse(addr_t startPage, addr_t length);
|
|
void vm_page_free(struct VMCache *cache, struct vm_page *page);
|
|
status_t vm_page_set_state(struct vm_page *page, int state);
|
|
void vm_page_requeue(struct vm_page *page, bool tail);
|
|
|
|
// get some data about the number of pages in the system
|
|
size_t vm_page_num_pages(void);
|
|
size_t vm_page_num_free_pages(void);
|
|
size_t vm_page_num_available_pages(void);
|
|
void vm_page_get_stats(system_info *info);
|
|
|
|
status_t vm_page_write_modified_page_range(struct VMCache *cache,
|
|
uint32 firstPage, uint32 endPage);
|
|
status_t vm_page_write_modified_pages(struct VMCache *cache);
|
|
void vm_page_schedule_write_page(struct vm_page *page);
|
|
void vm_page_schedule_write_page_range(struct VMCache *cache,
|
|
uint32 firstPage, uint32 endPage);
|
|
|
|
void vm_page_unreserve_pages(uint32 count);
|
|
void vm_page_reserve_pages(uint32 count);
|
|
|
|
struct vm_page *vm_page_allocate_page(int pageState, bool reserved);
|
|
status_t vm_page_allocate_pages(int pageState, struct vm_page **pages,
|
|
uint32 numPages);
|
|
struct vm_page *vm_page_allocate_page_run(int state, addr_t base,
|
|
addr_t length);
|
|
struct vm_page *vm_page_at_index(int32 index);
|
|
struct vm_page *vm_lookup_page(addr_t pageNumber);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif /* _KERNEL_VM_PAGE_H */
|