FreeBSD virtual memory subsystem code
|
#include <sys/cdefs.h>
#include <sys/param.h>
#include <sys/systm.h>
#include <sys/conf.h>
#include <sys/kernel.h>
#include <sys/lock.h>
#include <sys/proc.h>
#include <sys/mutex.h>
#include <sys/mman.h>
#include <sys/rwlock.h>
#include <sys/sysctl.h>
#include <sys/user.h>
#include <vm/vm.h>
#include <vm/vm_param.h>
#include <vm/vm_object.h>
#include <vm/vm_page.h>
#include <vm/vm_pageout.h>
#include <vm/vm_pager.h>
Go to the source code of this file.
Macros | |
#define | PHYSCLUSTER 1024 |
#define | PHYSALLOC 16 |
Functions | |
__FBSDID ("$FreeBSD$") | |
static int | default_phys_pager_getpages (vm_object_t object, vm_page_t *m, int count, int *rbehind, int *rahead) |
static int | default_phys_pager_populate (vm_object_t object, vm_pindex_t pidx, int fault_type, vm_prot_t max_prot, vm_pindex_t *first, vm_pindex_t *last) |
static boolean_t | default_phys_pager_haspage (vm_object_t object, vm_pindex_t pindex, int *before, int *after) |
static void | phys_pager_init (void) |
vm_object_t | phys_pager_allocate (void *handle, const struct phys_pager_ops *ops, void *data, vm_ooffset_t size, vm_prot_t prot, vm_ooffset_t foff, struct ucred *cred) |
static vm_object_t | phys_pager_alloc (void *handle, vm_ooffset_t size, vm_prot_t prot, vm_ooffset_t foff, struct ucred *ucred) |
static void | phys_pager_dealloc (vm_object_t object) |
static int | phys_pager_getpages (vm_object_t object, vm_page_t *m, int count, int *rbehind, int *rahead) |
SYSCTL_INT (_vm, OID_AUTO, phys_pager_cluster, CTLFLAG_RWTUN, &phys_pager_cluster, 0, "prefault window size for phys pager") | |
static int | phys_pager_populate (vm_object_t object, vm_pindex_t pidx, int fault_type, vm_prot_t max_prot, vm_pindex_t *first, vm_pindex_t *last) |
static void | phys_pager_putpages (vm_object_t object, vm_page_t *m, int count, boolean_t sync, int *rtvals) |
static boolean_t | phys_pager_haspage (vm_object_t object, vm_pindex_t pindex, int *before, int *after) |
Variables | |
static struct pagerlst | phys_pager_object_list |
static struct mtx | phys_pager_mtx |
const struct phys_pager_ops | default_phys_pg_ops |
static int | phys_pager_cluster = PHYSCLUSTER |
const struct pagerops | physpagerops |
#define PHYSALLOC 16 |
Definition at line 229 of file phys_pager.c.
#define PHYSCLUSTER 1024 |
Definition at line 216 of file phys_pager.c.
__FBSDID | ( | "$FreeBSD$" | ) |
|
static |
Definition at line 177 of file phys_pager.c.
References PG_ZERO, pmap_zero_page(), vm_page_all_valid(), vm_page_none_valid(), vm_page_valid(), and VM_PAGER_OK.
|
static |
Definition at line 280 of file phys_pager.c.
References phys_pager_cluster.
|
static |
Definition at line 232 of file phys_pager.c.
References phys_pager_cluster, PHYSALLOC, vm_object::size, VM_ALLOC_COUNT, VM_ALLOC_NORMAL, vm_page_all_valid(), vm_page_grab(), vm_page_zero_invalid(), and VM_PAGER_OK.
|
static |
Definition at line 149 of file phys_pager.c.
References default_phys_pg_ops, and phys_pager_allocate().
vm_object_t phys_pager_allocate | ( | void * | handle, |
const struct phys_pager_ops * | ops, | ||
void * | data, | ||
vm_ooffset_t | size, | ||
vm_prot_t | prot, | ||
vm_ooffset_t | foff, | ||
struct ucred * | cred | ||
) |
Definition at line 78 of file phys_pager.c.
References vm_object::handle, OBJ_POPULATE, OBJT_PHYS, OFF_TO_IDX, phys_pager_mtx, phys_pager_object_list, phys_pager_ops::phys_pg_ctor, phys_pager_ops::phys_pg_populate, vm_object::size, vm_object_allocate(), vm_object_deallocate(), vm_object_set_flag(), and vm_pager_object_lookup().
Referenced by phys_pager_alloc().
|
static |
Definition at line 157 of file phys_pager.c.
References vm_object::handle, OBJT_DEAD, vm_object::ops, vm_object::phys, phys_pager_mtx, phys_pager_object_list, vm_object::un_pager, VM_OBJECT_WLOCK, and VM_OBJECT_WUNLOCK.
|
static |
Definition at line 201 of file phys_pager.c.
References vm_object::ops, vm_object::phys, and vm_object::un_pager.
|
static |
Definition at line 295 of file phys_pager.c.
References vm_object::ops, vm_object::phys, and vm_object::un_pager.
|
static |
Definition at line 70 of file phys_pager.c.
References phys_pager_mtx, and phys_pager_object_list.
|
static |
Definition at line 264 of file phys_pager.c.
References vm_object::ops, vm_object::phys, and vm_object::un_pager.
|
static |
Definition at line 272 of file phys_pager.c.
SYSCTL_INT | ( | _vm | , |
OID_AUTO | , | ||
phys_pager_cluster | , | ||
CTLFLAG_RWTUN | , | ||
& | phys_pager_cluster, | ||
0 | , | ||
"prefault window size for phys pager" | |||
) |
const struct phys_pager_ops default_phys_pg_ops |
Definition at line 61 of file phys_pager.c.
Referenced by phys_pager_alloc(), and vm_object_init().
|
static |
Definition at line 218 of file phys_pager.c.
Referenced by default_phys_pager_haspage(), and default_phys_pager_populate().
|
static |
Definition at line 53 of file phys_pager.c.
Referenced by phys_pager_allocate(), phys_pager_dealloc(), and phys_pager_init().
|
static |
Definition at line 51 of file phys_pager.c.
Referenced by phys_pager_allocate(), phys_pager_dealloc(), and phys_pager_init().
const struct pagerops physpagerops |
Definition at line 302 of file phys_pager.c.