46
47 #define KM_SLEEP 0x0000 /* can block for memory; success guaranteed */
48 #define KM_NOSLEEP 0x0001 /* cannot block for memory; may fail */
49 #define KM_PANIC 0x0002 /* if memory cannot be allocated, panic */
50 #define KM_PUSHPAGE 0x0004 /* can block for memory; may use reserve */
51 #define KM_NORMALPRI 0x0008 /* with KM_NOSLEEP, lower priority allocation */
52 #define KM_NOSLEEP_LAZY (KM_NOSLEEP | KM_NORMALPRI) /* Syntactic sugar. */
53 #define KM_VMFLAGS 0x00ff /* flags that must match VM_* flags */
54
55 #define KM_FLAGS 0xffff /* all settable kmem flags */
56
57 #if defined(_KERNEL) || defined(_FAKE_KERNEL)
58
59 extern void *kmem_alloc(size_t size, int kmflags);
60 extern void *kmem_zalloc(size_t size, int kmflags);
61 extern void kmem_free(void *buf, size_t size);
62 extern void *kmem_alloc_tryhard(size_t size, size_t *alloc_size, int kmflags);
63 extern void kmem_dump_init(size_t);
64 extern void kmem_dump_begin(void);
65 extern size_t kmem_dump_finish(char *buf, size_t size);
66
67 #endif /* _KERNEL */
68
69 /*
70 * Kernel memory allocator: private interfaces.
71 * These interfaces are still evolving.
72 * Do not use them in unbundled drivers.
73 */
74
75 /*
76 * Flags for kmem_cache_create()
77 */
78 #define KMC_NOTOUCH 0x00010000
79 #define KMC_NODEBUG 0x00020000
80 #define KMC_NOMAGAZINE 0x00040000
81 #define KMC_NOHASH 0x00080000
82 #define KMC_QCACHE 0x00100000
83 #define KMC_KMEM_ALLOC 0x00200000 /* internal use only */
84 #define KMC_IDENTIFIER 0x00400000 /* internal use only */
85 #define KMC_PREFILL 0x00800000
|
46
47 #define KM_SLEEP 0x0000 /* can block for memory; success guaranteed */
48 #define KM_NOSLEEP 0x0001 /* cannot block for memory; may fail */
49 #define KM_PANIC 0x0002 /* if memory cannot be allocated, panic */
50 #define KM_PUSHPAGE 0x0004 /* can block for memory; may use reserve */
51 #define KM_NORMALPRI 0x0008 /* with KM_NOSLEEP, lower priority allocation */
52 #define KM_NOSLEEP_LAZY (KM_NOSLEEP | KM_NORMALPRI) /* Syntactic sugar. */
53 #define KM_VMFLAGS 0x00ff /* flags that must match VM_* flags */
54
55 #define KM_FLAGS 0xffff /* all settable kmem flags */
56
57 #if defined(_KERNEL) || defined(_FAKE_KERNEL)
58
59 extern void *kmem_alloc(size_t size, int kmflags);
60 extern void *kmem_zalloc(size_t size, int kmflags);
61 extern void kmem_free(void *buf, size_t size);
62 extern void *kmem_alloc_tryhard(size_t size, size_t *alloc_size, int kmflags);
63 extern void kmem_dump_init(size_t);
64 extern void kmem_dump_begin(void);
65 extern size_t kmem_dump_finish(char *buf, size_t size);
66 extern void *kmem_rezalloc(void *, size_t, size_t, int);
67
68 #endif /* _KERNEL */
69
70 /*
71 * Kernel memory allocator: private interfaces.
72 * These interfaces are still evolving.
73 * Do not use them in unbundled drivers.
74 */
75
76 /*
77 * Flags for kmem_cache_create()
78 */
79 #define KMC_NOTOUCH 0x00010000
80 #define KMC_NODEBUG 0x00020000
81 #define KMC_NOMAGAZINE 0x00040000
82 #define KMC_NOHASH 0x00080000
83 #define KMC_QCACHE 0x00100000
84 #define KMC_KMEM_ALLOC 0x00200000 /* internal use only */
85 #define KMC_IDENTIFIER 0x00400000 /* internal use only */
86 #define KMC_PREFILL 0x00800000
|