Changeset View
Changeset View
Standalone View
Standalone View
sys/sys/vmem.h
Show All 28 Lines | |||||
/* $FreeBSD$ */ | /* $FreeBSD$ */ | ||||
#ifndef _SYS_VMEM_H_ | #ifndef _SYS_VMEM_H_ | ||||
#define _SYS_VMEM_H_ | #define _SYS_VMEM_H_ | ||||
#include <sys/types.h> | #include <sys/types.h> | ||||
#ifdef _KERNEL | |||||
typedef struct vmem vmem_t; | typedef struct vmem vmem_t; | ||||
typedef uintptr_t vmem_addr_t; | typedef uintptr_t vmem_addr_t; | ||||
typedef size_t vmem_size_t; | typedef size_t vmem_size_t; | ||||
#define VMEM_ADDR_MIN 0 | #define VMEM_ADDR_MIN 0 | ||||
#define VMEM_ADDR_QCACHE_MIN 1 | #define VMEM_ADDR_QCACHE_MIN 1 | ||||
#define VMEM_ADDR_MAX (~(vmem_addr_t)0) | #define VMEM_ADDR_MAX (~(vmem_addr_t)0) | ||||
/* vmem_size typemask */ | |||||
#define VMEM_ALLOC 0x01 | |||||
#define VMEM_FREE 0x02 | |||||
#define VMEM_MAXFREE 0x10 | |||||
typedef int (vmem_import_t)(void *, vmem_size_t, int, vmem_addr_t *); | typedef int (vmem_import_t)(void *, vmem_size_t, int, vmem_addr_t *); | ||||
typedef void (vmem_release_t)(void *, vmem_addr_t, vmem_size_t); | typedef void (vmem_release_t)(void *, vmem_addr_t, vmem_size_t); | ||||
typedef void (vmem_reclaim_t)(vmem_t *, int); | typedef void (vmem_reclaim_t)(vmem_t *, int); | ||||
#ifndef _KERNEL | |||||
#define M_FIRSTFIT 0x1000 /* only for vmem, fast fit */ | |||||
#define M_BESTFIT 0x2000 /* only for vmem, low fragmentation */ | |||||
#define M_NEXTFIT 0x8000 /* only for vmem, follow cursor */ | |||||
#endif | |||||
__BEGIN_DECLS | |||||
/* | /* | ||||
* Create a vmem: | * Create a vmem: | ||||
* name - Name of the region | * name - Name of the region | ||||
* base - Initial span start (optional) | * base - Initial span start (optional) | ||||
* size - Initial span size | * size - Initial span size | ||||
* quantum - Natural unit of allocation (ie PAGE_SIZE, 1, etc) | * quantum - Natural unit of allocation (ie PAGE_SIZE, 1, etc) | ||||
* qcache_max - Maximum size to quantum cache. This creates a UMA | * qcache_max - Maximum size to quantum cache. This creates a UMA | ||||
* cache for each multiple of quantum up to qcache_max. | * cache for each multiple of quantum up to qcache_max. | ||||
▲ Show 20 Lines • Show All 70 Lines • ▼ Show 20 Lines | |||||
void vmem_whatis(vmem_addr_t addr, int (*fn)(const char *, ...) | void vmem_whatis(vmem_addr_t addr, int (*fn)(const char *, ...) | ||||
__printflike(1, 2)); | __printflike(1, 2)); | ||||
void vmem_print(vmem_addr_t addr, const char *, int (*fn)(const char *, ...) | void vmem_print(vmem_addr_t addr, const char *, int (*fn)(const char *, ...) | ||||
__printflike(1, 2)); | __printflike(1, 2)); | ||||
void vmem_printall(const char *, int (*fn)(const char *, ...) | void vmem_printall(const char *, int (*fn)(const char *, ...) | ||||
__printflike(1, 2)); | __printflike(1, 2)); | ||||
void vmem_startup(void); | void vmem_startup(void); | ||||
/* vmem_size typemask */ | __END_DECLS | ||||
#define VMEM_ALLOC 0x01 | |||||
#define VMEM_FREE 0x02 | |||||
#define VMEM_MAXFREE 0x10 | |||||
#endif /* _KERNEL */ | |||||
#endif /* !_SYS_VMEM_H_ */ | #endif /* !_SYS_VMEM_H_ */ |