X-Git-Url: https://git.saurik.com/apple/xnu.git/blobdiff_plain/6d2010ae8f7a6078e10b361c6962983bab233e0f..d26ffc64f583ab2d29df48f13518685602bc8832:/bsd/sys/malloc.h diff --git a/bsd/sys/malloc.h b/bsd/sys/malloc.h index 4e8688735..0dd7117f5 100644 --- a/bsd/sys/malloc.h +++ b/bsd/sys/malloc.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000-2010 Apple Inc. All rights reserved. + * Copyright (c) 2000-2013 Apple Inc. All rights reserved. * * @APPLE_OSREFERENCE_LICENSE_HEADER_START@ * @@ -81,7 +81,7 @@ #define M_WAITOK 0x0000 #define M_NOWAIT 0x0001 #define M_ZERO 0x0004 /* bzero the allocation */ - +#define M_NULL 0x0008 /* return NULL if space is unavailable*/ #ifdef BSD_KERNEL_PRIVATE @@ -118,7 +118,7 @@ #define M_VNODE 25 /* Dynamically allocated vnodes */ #define M_CACHE 26 /* Dynamically allocated cache entries */ #define M_DQUOT 27 /* UFS quota entries */ -#define M_UFSMNT 28 /* UFS mount structure */ +#define M_PROC_UUID_POLICY 28 /* proc UUID policy entries */ #define M_SHM 29 /* SVID compatible shared memory segments */ #define M_PLIMIT 30 /* plimit structures */ #define M_SIGACTS 31 /* sigacts structures */ @@ -165,11 +165,11 @@ #define M_BUFHDR 72 /* File buffer cache headers */ #define M_OFILETABL 73 /* Open file descriptor table */ #define M_MCLUST 74 /* mbuf cluster buffers */ -#define M_HFSMNT 75 /* HFS mount structure */ -#define M_HFSNODE 76 /* HFS catalog node */ -#define M_HFSFORK 77 /* HFS file fork */ -#define M_ZFSMNT 78 /* ZFS mount data */ -#define M_ZFSNODE 79 /* ZFS inode */ +/* unused 75 */ +/* unused 76 */ +/* unused 77 */ +/* unused 78 */ +/* unused 79 */ #define M_TEMP 80 /* misc temporary data buffers */ #define M_SECA 81 /* security associations, key management */ #define M_DEVFS 82 @@ -179,38 +179,49 @@ #define M_IP6NDP 86 /* IPv6 Neighbour Discovery*/ #define M_IP6OPT 87 /* IPv6 options management */ #define M_IP6MISC 88 /* IPv6 misc. memory */ -#define M_TSEGQ 89 /* TCP segment queue entry, unused */ +/* unused 89 */ #define M_IGMP 90 -#define M_JNL_JNL 91 /* Journaling: "struct journal" */ -#define M_JNL_TR 92 /* Journaling: "struct transaction" */ +/* unused 91 */ +/* unused 92 */ #define M_SPECINFO 93 /* special file node */ -#define M_KQUEUE 94 /* kqueue */ -#define M_HFSDIRHINT 95 /* HFS directory hint */ +#define M_KQUEUE 94 /* kqueue system */ +/* unused 95 */ #define M_CLRDAHEAD 96 /* storage for cluster read-ahead state */ #define M_CLWRBEHIND 97 /* storage for cluster write-behind state */ #define M_IOV64 98 /* large iov's for 64 bit process */ #define M_FILEGLOB 99 /* fileglobal */ #define M_KAUTH 100 /* kauth subsystem */ #define M_DUMMYNET 101 /* dummynet */ -#ifndef __LP64__ -#define M_UNSAFEFS 102 /* storage for vnode lock state for unsafe FS */ -#endif /* __LP64__ */ +/* M_UNSAFEFS 102 */ #define M_MACPIPELABEL 103 /* MAC pipe labels */ #define M_MACTEMP 104 /* MAC framework */ #define M_SBUF 105 /* string buffers */ #define M_EXTATTR 106 /* extended attribute */ -#define M_LCTX 107 /* process login context */ -/* M_TRAFFIC_MGT 108 */ -#if HFS_COMPRESSION +#define M_SELECT 107 /* per-thread select memory */ +/* M_TRAFFIC_MGT 108 */ +#if FS_COMPRESSION #define M_DECMPFS_CNODE 109 /* decmpfs cnode structures */ -#endif /* HFS_COMPRESSION */ +#endif /* FS_COMPRESSION */ #define M_INMFILTER 110 /* IPv4 multicast PCB-layer source filter */ #define M_IPMSOURCE 111 /* IPv4 multicast IGMP-layer source filter */ #define M_IN6MFILTER 112 /* IPv6 multicast PCB-layer source filter */ #define M_IP6MOPTS 113 /* IPv6 multicast options */ #define M_IP6MSOURCE 114 /* IPv6 multicast MLD-layer source filter */ +#define M_FLOW_DIVERT_PCB 115 /* flow divert control block */ +#define M_FLOW_DIVERT_GROUP 116 /* flow divert socket group */ +#define M_IP6CGA 117 +#define M_NECP 118 /* General NECP policy data */ +#define M_NECP_SESSION_POLICY 119 /* NECP session policies */ +#define M_NECP_SOCKET_POLICY 120 /* NECP socket-level policies */ +#define M_NECP_IP_POLICY 121 /* NECP IP-level policies */ +#define M_FD_VN_DATA 122 /* Per fd vnode data */ +#define M_FD_DIRBUF 123 /* Directory entries' buffer */ +#define M_NETAGENT 124 /* Network Agents */ +#define M_EVENTHANDLER 125 /* Eventhandler */ +#define M_LLTABLE 126 /* Link layer table */ +#define M_NWKWQ 127 /* Network work queue */ -#define M_LAST 115 /* Must be last type + 1 */ +#define M_LAST 128 /* Must be last type + 1 */ #else /* BSD_KERNEL_PRIVATE */ @@ -218,7 +229,6 @@ #define M_IFADDR 9 /* interface address (IOFireWireIP)*/ #define M_LOCKF 40 /* Byte-range locking structures (msdos) */ #define M_TEMP 80 /* misc temporary data buffers */ -#define M_HFSMNT 75 /* HFS mount structure (afpfs) */ #define M_KAUTH 100 /* kauth subsystem (smb) */ #define M_SONAME 11 /* socket name (smb) */ #define M_PCB 4 /* protocol control block (smb) */ @@ -252,6 +262,68 @@ extern struct kmemstats kmemstats[]; * The malloc/free primatives used * by the BSD kernel code. */ +#ifdef XNU_KERNEL_PRIVATE + +#include + +#define MALLOC(space, cast, size, type, flags) \ + ({ VM_ALLOC_SITE_STATIC(0, 0); \ + (space) = (cast)__MALLOC(size, type, flags, &site); }) + +#define REALLOC(space, cast, addr, size, type, flags) \ + ({ VM_ALLOC_SITE_STATIC(0, 0); \ + (space) = (cast)__REALLOC(addr, size, type, flags, &site); }) + +#define _MALLOC(size, type, flags) \ + ({ VM_ALLOC_SITE_STATIC(0, 0); \ + __MALLOC(size, type, flags, &site); }) +#define _REALLOC(addr, size, type, flags) \ + ({ VM_ALLOC_SITE_STATIC(0, 0); \ + __REALLOC(addr, size, type, flags, &site); }) + +#define _MALLOC_ZONE(size, type, flags) \ + ({ VM_ALLOC_SITE_STATIC(0, 0); \ + __MALLOC_ZONE(size, type, flags, &site); }) + +#define FREE(addr, type) \ + _FREE((void *)addr, type) + +#define MALLOC_ZONE(space, cast, size, type, flags) \ + (space) = (cast)_MALLOC_ZONE(size, type, flags) + +#define FREE_ZONE(addr, size, type) \ + _FREE_ZONE((void *)addr, size, type) + +extern void *__MALLOC( + size_t size, + int type, + int flags, + vm_allocation_site_t *site) __attribute__((alloc_size(1))); + +extern void _FREE( + void *addr, + int type); + +extern void *__REALLOC( + void *addr, + size_t size, + int type, + int flags, + vm_allocation_site_t *site) __attribute__((alloc_size(2))); + +extern void *__MALLOC_ZONE( + size_t size, + int type, + int flags, + vm_allocation_site_t *site); + +extern void _FREE_ZONE( + void *elem, + size_t size, + int type); + +#else /* XNU_KERNEL_PRIVATE */ + #define MALLOC(space, cast, size, type, flags) \ (space) = (cast)_MALLOC(size, type, flags) @@ -292,6 +364,9 @@ extern void _FREE_ZONE( size_t size, int type); + +#endif /* !XNU_KERNEL_PRIVATE */ + #endif /* KERNEL */ #endif /* _SYS_MALLOC_H_ */