#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
#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 */
+/* unused 75 */
+/* unused 76 */
+/* unused 77 */
/* unused 78 */
/* unused 79 */
#define M_TEMP 80 /* misc temporary data buffers */
#define M_IP6MISC 88 /* IPv6 misc. memory */
/* 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_EXTATTR 106 /* extended attribute */
#define M_SELECT 107 /* per-thread select memory */
/* M_TRAFFIC_MGT 108 */
-#if HFS_COMPRESSION
+#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_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 125 /* Must be last type + 1 */
+#define M_LAST 128 /* Must be last type + 1 */
#else /* BSD_KERNEL_PRIVATE */
#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) */
* The malloc/free primatives used
* by the BSD kernel code.
*/
-#if XNU_KERNEL_PRIVATE
+#ifdef XNU_KERNEL_PRIVATE
#include <mach/vm_types.h>
-#define MALLOC(space, cast, size, type, flags) \
- ({ static vm_allocation_site_t site __attribute__((section("__DATA, __data"))); \
+#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) \
- ({ static vm_allocation_site_t site __attribute__((section("__DATA, __data"))); \
+
+#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) \
- ({ static vm_allocation_site_t site __attribute__((section("__DATA, __data"))); \
+#define _MALLOC(size, type, flags) \
+ ({ VM_ALLOC_SITE_STATIC(0, 0); \
__MALLOC(size, type, flags, &site); })
-#define _REALLOC(addr, size, type, flags) \
- ({ static vm_allocation_site_t site __attribute__((section("__DATA, __data"))); \
+#define _REALLOC(addr, size, type, flags) \
+ ({ VM_ALLOC_SITE_STATIC(0, 0); \
__REALLOC(addr, size, type, flags, &site); })
-#define _MALLOC_ZONE(size, type, flags) \
- ({ static vm_allocation_site_t site __attribute__((section("__DATA, __data"))); \
+#define _MALLOC_ZONE(size, type, flags) \
+ ({ VM_ALLOC_SITE_STATIC(0, 0); \
__MALLOC_ZONE(size, type, flags, &site); })
#define FREE(addr, type) \
size_t size,
int type,
int flags,
- vm_allocation_site_t *site);
+ vm_allocation_site_t *site) __attribute__((alloc_size(1)));
extern void _FREE(
void *addr,
size_t size,
int type,
int flags,
- vm_allocation_site_t *site);
+ vm_allocation_site_t *site) __attribute__((alloc_size(2)));
extern void *__MALLOC_ZONE(
size_t size,