36 #ifndef _SYS_MALLOC_H_ 37 #define _SYS_MALLOC_H_ 45 #define M_WAITOK 0x0000 46 #define M_NOWAIT 0x0001 47 #define M_KERNEL 0x0002 85 #define M_VMOBJHASH 33 109 #define M_ISOFSMNT 57 110 #define M_ISOFSNODE 58 111 #define M_NFSRVDESC 59 112 #define M_NFSDIROFF 60 113 #define M_NFSBIGFH 61 114 #define M_MSDOSFSMNT 67 115 #define M_MSDOSFSNODE 68 116 #define M_MSDOSFSFAT 69 117 #define M_DEVFSMNT 70 118 #define M_DEVFSBACK 71 119 #define M_DEVFSFRONT 72 120 #define M_DEVFSNODE 73 126 #define M_PKTCLASS 79 135 #define INITKMEMNAMES { \ 199 NULL, NULL, NULL, NULL, \ 225 u_short ks_limblocks;
226 u_short ks_mapblocks;
243 #define ku_freecnt ku_un.freecnt 244 #define ku_pagecnt ku_un.pagecnt 261 #define MINALLOCSIZE (1 << MINBUCKET) 262 #define BUCKETINDX(size) \ 263 ((size) <= (MINALLOCSIZE * 128) \ 264 ? (size) <= (MINALLOCSIZE * 8) \ 265 ? (size) <= (MINALLOCSIZE * 2) \ 266 ? (size) <= (MINALLOCSIZE * 1) \ 269 : (size) <= (MINALLOCSIZE * 4) \ 272 : (size) <= (MINALLOCSIZE* 32) \ 273 ? (size) <= (MINALLOCSIZE * 16) \ 276 : (size) <= (MINALLOCSIZE * 64) \ 279 : (size) <= (MINALLOCSIZE * 2048) \ 280 ? (size) <= (MINALLOCSIZE * 512) \ 281 ? (size) <= (MINALLOCSIZE * 256) \ 284 : (size) <= (MINALLOCSIZE * 1024) \ 287 : (size) <= (MINALLOCSIZE * 8192) \ 288 ? (size) <= (MINALLOCSIZE * 4096) \ 291 : (size) <= (MINALLOCSIZE * 16384) \ 298 #define kmemxtob(alloc) (kmembase + (alloc) * PAGE_SIZE) 299 #define btokmemx(addr) (((caddr_t)(addr) - kmembase) / PAGE_SIZE) 300 #define btokup(addr) (&kmemusage[(caddr_t)(addr) - kmembase >> PAGE_SHIFT]) 305 #if defined(KMEMSTATS) || defined(DIAGNOSTIC) 306 #define MALLOC(space, cast, size, type, flags) \ 307 (space) = (cast)malloc((u_long)(size), type, flags) 308 #define FREE(addr, type) free((addr), type) 311 #define MALLOC(space, cast, size, type, flags) { \ 312 register struct kmembuckets *kbp = &bucket[BUCKETINDX(size)]; \ 314 if (kbp->kb_next == NULL) { \ 315 (space) = (cast)malloc((u_long)(size), type, flags); \ 317 (space) = (cast)kbp->kb_next; \ 318 kbp->kb_next = *(caddr_t *)(space); \ 323 #define FREE(addr, type) { \ 324 register struct kmembuckets *kbp; \ 325 register struct kmemusage *kup = btokup(addr); \ 327 if (1 << kup->ku_indx > MAXALLOCSAVE) { \ 328 free((addr), type); \ 330 kbp = &bucket[kup->ku_indx]; \ 331 if (kbp->kb_next == NULL) \ 332 kbp->kb_next = (caddr_t)(addr); \ 334 *(caddr_t *)(kbp->kb_last) = (caddr_t)(addr); \ 335 *(caddr_t *)(addr) = NULL; \ 336 kbp->kb_last = (caddr_t)(addr); \ 342 extern struct kmemstats kmemstats[];
343 extern struct kmemusage *kmemusage;
344 extern char *kmembase;
347 void free (
void *addr,
int type);
348 void *malloc (
size_t size,
int type,
int flags);
350 void *realloc(
void * __r,
size_t __size);
Definition: libnetworking/sys/malloc.h:250