|
|
1.1 ! root 1: /* ! 2: * Copyright (c) 2000 Apple Computer, Inc. All rights reserved. ! 3: * ! 4: * @APPLE_LICENSE_HEADER_START@ ! 5: * ! 6: * The contents of this file constitute Original Code as defined in and ! 7: * are subject to the Apple Public Source License Version 1.1 (the ! 8: * "License"). You may not use this file except in compliance with the ! 9: * License. Please obtain a copy of the License at ! 10: * http://www.apple.com/publicsource and read it before using this file. ! 11: * ! 12: * This Original Code and all software distributed under the License are ! 13: * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER ! 14: * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, ! 15: * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, ! 16: * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT. Please see the ! 17: * License for the specific language governing rights and limitations ! 18: * under the License. ! 19: * ! 20: * @APPLE_LICENSE_HEADER_END@ ! 21: */ ! 22: /* Copyright (c) 1998, 1999 Apple Computer, Inc. All Rights Reserved */ ! 23: /* Copyright (c) 1995, 1997 Apple Computer, Inc. All Rights Reserved */ ! 24: /* ! 25: * Copyright (c) 1987, 1993 ! 26: * The Regents of the University of California. All rights reserved. ! 27: * ! 28: * Redistribution and use in source and binary forms, with or without ! 29: * modification, are permitted provided that the following conditions ! 30: * are met: ! 31: * 1. Redistributions of source code must retain the above copyright ! 32: * notice, this list of conditions and the following disclaimer. ! 33: * 2. Redistributions in binary form must reproduce the above copyright ! 34: * notice, this list of conditions and the following disclaimer in the ! 35: * documentation and/or other materials provided with the distribution. ! 36: * 3. All advertising materials mentioning features or use of this software ! 37: * must display the following acknowledgement: ! 38: * This product includes software developed by the University of ! 39: * California, Berkeley and its contributors. ! 40: * 4. Neither the name of the University nor the names of its contributors ! 41: * may be used to endorse or promote products derived from this software ! 42: * without specific prior written permission. ! 43: * ! 44: * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ! 45: * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE ! 46: * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! 47: * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE ! 48: * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! 49: * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS ! 50: * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) ! 51: * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT ! 52: * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY ! 53: * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF ! 54: * SUCH DAMAGE. ! 55: * ! 56: * @(#)malloc.h 8.5 (Berkeley) 5/3/95 ! 57: */ ! 58: ! 59: #ifndef _SYS_MALLOC_H_ ! 60: #define _SYS_MALLOC_H_ ! 61: ! 62: #define KMEMSTATS ! 63: ! 64: /* ! 65: * flags to malloc ! 66: */ ! 67: #define M_WAITOK 0x0000 ! 68: #define M_NOWAIT 0x0001 ! 69: ! 70: /* ! 71: * Types of memory to be allocated (not all are used by us) ! 72: */ ! 73: #define M_FREE 0 /* should be on free list */ ! 74: #define M_MBUF 1 /* mbuf */ ! 75: #define M_DEVBUF 2 /* device driver memory */ ! 76: #define M_SOCKET 3 /* socket structure */ ! 77: #define M_PCB 4 /* protocol control block */ ! 78: #define M_RTABLE 5 /* routing tables */ ! 79: #define M_HTABLE 6 /* IMP host tables */ ! 80: #define M_FTABLE 7 /* fragment reassembly header */ ! 81: #define M_ZOMBIE 8 /* zombie proc status */ ! 82: #define M_IFADDR 9 /* interface address */ ! 83: #define M_SOOPTS 10 /* socket options */ ! 84: #define M_SONAME 11 /* socket name */ ! 85: #define M_NAMEI 12 /* namei path name buffer */ ! 86: #define M_GPROF 13 /* kernel profiling buffer */ ! 87: #define M_IOCTLOPS 14 /* ioctl data buffer */ ! 88: #define M_MAPMEM 15 /* mapped memory descriptors */ ! 89: #define M_CRED 16 /* credentials */ ! 90: #define M_PGRP 17 /* process group header */ ! 91: #define M_SESSION 18 /* session header */ ! 92: #define M_IOV 19 /* large iov's */ ! 93: #define M_MOUNT 20 /* vfs mount struct */ ! 94: #define M_FHANDLE 21 /* network file handle */ ! 95: #define M_NFSREQ 22 /* NFS request header */ ! 96: #define M_NFSMNT 23 /* NFS mount structure */ ! 97: #define M_NFSNODE 24 /* NFS vnode private part */ ! 98: #define M_VNODE 25 /* Dynamically allocated vnodes */ ! 99: #define M_CACHE 26 /* Dynamically allocated cache entries */ ! 100: #define M_DQUOT 27 /* UFS quota entries */ ! 101: #define M_UFSMNT 28 /* UFS mount structure */ ! 102: #define M_SHM 29 /* SVID compatible shared memory segments */ ! 103: #define M_VMMAP 30 /* VM map structures */ ! 104: #define M_VMMAPENT 31 /* VM map entry structures */ ! 105: #define M_VMOBJ 32 /* VM object structure */ ! 106: #define M_VMOBJHASH 33 /* VM object hash structure */ ! 107: #define M_VMPMAP 34 /* VM pmap */ ! 108: #define M_VMPVENT 35 /* VM phys-virt mapping entry */ ! 109: #define M_VMPAGER 36 /* XXX: VM pager struct */ ! 110: #define M_VMPGDATA 37 /* XXX: VM pager private data */ ! 111: #define M_FILE 38 /* Open file structure */ ! 112: #define M_FILEDESC 39 /* Open file descriptor table */ ! 113: #define M_LOCKF 40 /* Byte-range locking structures */ ! 114: #define M_PROC 41 /* Proc structures */ ! 115: #define M_SUBPROC 42 /* Proc sub-structures */ ! 116: #define M_SEGMENT 43 /* Segment for LFS */ ! 117: #define M_LFSNODE 44 /* LFS vnode private part */ ! 118: #define M_FFSNODE 45 /* FFS vnode private part */ ! 119: #define M_MFSNODE 46 /* MFS vnode private part */ ! 120: #define M_NQLEASE 47 /* Nqnfs lease */ ! 121: #define M_NQMHOST 48 /* Nqnfs host address table */ ! 122: #define M_NETADDR 49 /* Export host address structure */ ! 123: #define M_NFSSVC 50 /* Nfs server structure */ ! 124: #define M_NFSUID 51 /* Nfs uid mapping structure */ ! 125: #define M_NFSD 52 /* Nfs server daemon structure */ ! 126: #define M_IPMOPTS 53 /* internet multicast options */ ! 127: #define M_IPMADDR 54 /* internet multicast address */ ! 128: #define M_IFMADDR 55 /* link-level multicast address */ ! 129: #define M_MRTABLE 56 /* multicast routing tables */ ! 130: #define M_ISOFSMNT 57 /* ISOFS mount structure */ ! 131: #define M_ISOFSNODE 58 /* ISOFS vnode private part */ ! 132: #define M_NFSRVDESC 59 /* NFS server socket descriptor */ ! 133: #define M_NFSDIROFF 60 /* NFS directory offset data */ ! 134: #define M_NFSBIGFH 61 /* NFS version 3 file handle */ ! 135: #define M_MSDOSFSMNT 62 /* MSDOS FS mount structure */ ! 136: #define M_MSDOSFSFAT 63 /* MSDOS FS fat table */ ! 137: #define M_MSDOSFSNODE 64 /* MSDOS FS vnode private part */ ! 138: #define M_TTYS 65 /* allocated tty structures */ ! 139: #define M_EXEC 66 /* argument lists & other mem used by exec */ ! 140: #define M_MISCFSMNT 67 /* miscfs mount structures */ ! 141: #define M_MISCFSNODE 68 /* miscfs vnode private part */ ! 142: #define M_ADOSFSMNT 69 /* adosfs mount structures */ ! 143: #define M_ADOSFSNODE 70 /* adosfs vnode private part */ ! 144: #define M_ANODE 71 /* adosfs anode structures and tables. */ ! 145: #define M_BUFHDR 72 /* File buffer cache headers */ ! 146: #define M_OFILETABL 73 /* Open file descriptor table */ ! 147: #define M_MCLUST 74 /* mbuf cluster buffers */ ! 148: #define M_HFSMNT 75 /* HFS mount structure */ ! 149: #define M_HFSNODE 76 /* HFS private node structre */ ! 150: #define M_HFSFMETA 77 /* HFS file meta data */ ! 151: #define M_VOLFSMNT 78 /* VOLFS mount structure */ ! 152: #define M_VOLFSNODE 79 /* VOLFS private node part */ ! 153: #define M_TEMP 80 /* misc temporary data buffers */ ! 154: #define M_SECA 81 /* security associations, key management */ ! 155: #define M_DEVFS 82 ! 156: #define M_IPFW 83 /* IP Forwarding/NAT */ ! 157: #define M_LAST 84 /* Must be last type + 1 */ ! 158: ! 159: /* Strings corresponding to types of memory */ ! 160: /* Must be in synch with the #defines above */ ! 161: #define INITKMEMNAMES { \ ! 162: "free", /* 0 M_FREE */ \ ! 163: "mbuf", /* 1 M_MBUF */ \ ! 164: "devbuf", /* 2 M_DEVBUF */ \ ! 165: "socket", /* 3 M_SOCKET */ \ ! 166: "pcb", /* 4 M_PCB */ \ ! 167: "routetbl", /* 5 M_RTABLE */ \ ! 168: "hosttbl", /* 6 M_HTABLE */ \ ! 169: "fragtbl", /* 7 M_FTABLE */ \ ! 170: "zombie", /* 8 M_ZOMBIE */ \ ! 171: "ifaddr", /* 9 M_IFADDR */ \ ! 172: "soopts", /* 10 M_SOOPTS */ \ ! 173: "soname", /* 11 M_SONAME */ \ ! 174: "namei", /* 12 M_NAMEI */ \ ! 175: "gprof", /* 13 M_GPROF */ \ ! 176: "ioctlops", /* 14 M_IOCTLOPS */ \ ! 177: "mapmem", /* 15 M_MAPMEM */ \ ! 178: "cred", /* 16 M_CRED */ \ ! 179: "pgrp", /* 17 M_PGRP */ \ ! 180: "session", /* 18 M_SESSION */ \ ! 181: "iov", /* 19 M_IOV */ \ ! 182: "mount", /* 20 M_MOUNT */ \ ! 183: "fhandle", /* 21 M_FHANDLE */ \ ! 184: "NFS req", /* 22 M_NFSREQ */ \ ! 185: "NFS mount", /* 23 M_NFSMNT */ \ ! 186: "NFS node", /* 24 M_NFSNODE */ \ ! 187: "vnodes", /* 25 M_VNODE */ \ ! 188: "namecache", /* 26 M_CACHE */ \ ! 189: "UFS quota", /* 27 M_DQUOT */ \ ! 190: "UFS mount", /* 28 M_UFSMNT */ \ ! 191: "shm", /* 29 M_SHM */ \ ! 192: "VM map", /* 30 M_VMMAP */ \ ! 193: "VM mapent", /* 31 M_VMMAPENT */ \ ! 194: "VM object", /* 32 M_VMOBJ */ \ ! 195: "VM objhash", /* 33 M_VMOBJHASH */ \ ! 196: "VM pmap", /* 34 M_VMPMAP */ \ ! 197: "VM pvmap", /* 35 M_VMPVENT */ \ ! 198: "VM pager", /* 36 M_VMPAGER */ \ ! 199: "VM pgdata", /* 37 M_VMPGDATA */ \ ! 200: "file", /* 38 M_FILE */ \ ! 201: "file desc", /* 39 M_FILEDESC */ \ ! 202: "lockf", /* 40 M_LOCKF */ \ ! 203: "proc", /* 41 M_PROC */ \ ! 204: "subproc", /* 42 M_SUBPROC */ \ ! 205: "LFS segment", /* 43 M_SEGMENT */ \ ! 206: "LFS node", /* 44 M_LFSNODE */ \ ! 207: "FFS node", /* 45 M_FFSNODE */ \ ! 208: "MFS node", /* 46 M_MFSNODE */ \ ! 209: "NQNFS Lease", /* 47 M_NQLEASE */ \ ! 210: "NQNFS Host", /* 48 M_NQMHOST */ \ ! 211: "Export Host", /* 49 M_NETADDR */ \ ! 212: "NFS srvsock", /* 50 M_NFSSVC */ \ ! 213: "NFS uid", /* 51 M_NFSUID */ \ ! 214: "NFS daemon", /* 52 M_NFSD */ \ ! 215: "ip_moptions", /* 53 M_IPMOPTS */ \ ! 216: "in_multi", /* 54 M_IPMADDR */ \ ! 217: "ether_multi", /* 55 M_IFMADDR */ \ ! 218: "mrt", /* 56 M_MRTABLE */ \ ! 219: "ISOFS mount", /* 57 M_ISOFSMNT */ \ ! 220: "ISOFS node", /* 58 M_ISOFSNODE */ \ ! 221: "NFSV3 srvdesc",/* 59 M_NFSRVDESC */ \ ! 222: "NFSV3 diroff", /* 60 M_NFSDIROFF */ \ ! 223: "NFSV3 bigfh", /* 61 M_NFSBIGFH */ \ ! 224: "MSDOSFS mount",/* 62 M_MSDOSFSMNT */ \ ! 225: "MSDOSFS fat", /* 63 M_MSDOSFSFAT */ \ ! 226: "MSDOSFS node", /* 64 M_MSDOSFSNODE */ \ ! 227: "ttys", /* 65 M_TTYS */ \ ! 228: "exec", /* 66 M_EXEC */ \ ! 229: "miscfs mount", /* 67 M_MISCFSMNT */ \ ! 230: "miscfs node", /* 68 M_MISCFSNODE */ \ ! 231: "adosfs mount", /* 69 M_ADOSFSMNT */ \ ! 232: "adosfs node", /* 70 M_ADOSFSNODE */ \ ! 233: "adosfs anode", /* 71 M_ANODE */ \ ! 234: "buf hdrs", /* 72 M_BUFHDR */ \ ! 235: "ofile tabl", /* 73 M_OFILETABL */ \ ! 236: "mbuf clust", /* 74 M_MCLUST */ \ ! 237: "HFS mount", /* 75 M_HFSMNT */ \ ! 238: "HFS node", /* 76 M_HFSNODE */ \ ! 239: "HFS fmeta", /* 77 M_HFSFMETA */ \ ! 240: "VOLFS mount", /* 78 M_VOLFSMNT */ \ ! 241: "VOLFS node", /* 79 M_VOLFSNODE */ \ ! 242: "temp", /* 80 M_TEMP */ \ ! 243: "key mgmt", /* 81 M_SECA */ \ ! 244: "DEVFS", /* 82 M_DEVFS */ \ ! 245: "IpFw/IpAcct" /* 83 M_IPFW */ \ ! 246: } ! 247: ! 248: struct kmemstats { ! 249: long ks_inuse; /* # of packets of this type currently ! 250: * in use */ ! 251: long ks_calls; /* total packets of this type ever allocated */ ! 252: long ks_memuse; /* total memory held in bytes */ ! 253: u_short ks_limblocks; /* number of times blocked for hitting limit */ ! 254: u_short ks_mapblocks; /* number of times blocked for kernel map */ ! 255: long ks_maxused; /* maximum number ever used */ ! 256: long ks_limit; /* most that are allowed to exist */ ! 257: long ks_size; /* sizes of this thing that are allocated */ ! 258: long ks_spare; ! 259: }; ! 260: ! 261: #ifdef KERNEL ! 262: extern struct kmemstats kmemstats[]; ! 263: ! 264: /* ! 265: * The malloc/free primatives used ! 266: * by the BSD kernel code. ! 267: */ ! 268: #define MALLOC(space, cast, size, type, flags) \ ! 269: (space) = (cast)_MALLOC(size, type, flags) ! 270: ! 271: #define FREE(addr, type) \ ! 272: _FREE((void *)addr, type) ! 273: ! 274: #define MALLOC_ZONE(space, cast, size, type, flags) \ ! 275: (space) = (cast)_MALLOC_ZONE(size, type, flags) ! 276: ! 277: #define FREE_ZONE(addr, size, type) \ ! 278: _FREE_ZONE((void *)addr, size, type) ! 279: ! 280: extern void *_MALLOC __P(( ! 281: size_t size, ! 282: int type, ! 283: int flags)); ! 284: ! 285: extern void _FREE __P(( ! 286: void *addr, ! 287: int type)); ! 288: ! 289: extern void *_MALLOC_ZONE __P(( ! 290: size_t size, ! 291: int type, ! 292: int flags)); ! 293: ! 294: extern void _FREE_ZONE __P(( ! 295: void *elem, ! 296: size_t size, ! 297: int type)); ! 298: ! 299: #endif /* KERNEL */ ! 300: ! 301: #endif /* _SYS_MALLOC_H_ */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.