/*
- * Copyright (c) 2000-2010 Apple Inc. All rights reserved.
+ * Copyright (c) 2000-2013 Apple Inc. All rights reserved.
*
* @APPLE_OSREFERENCE_LICENSE_HEADER_START@
*
#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_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 */
#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
#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 */
#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.
*/
+#ifdef XNU_KERNEL_PRIVATE
+
+#include <mach/vm_types.h>
+
+#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)
size_t size,
int type);
+
+#endif /* !XNU_KERNEL_PRIVATE */
+
#endif /* KERNEL */
#endif /* _SYS_MALLOC_H_ */