]> git.saurik.com Git - apple/xnu.git/blobdiff - osfmk/kern/zalloc.h
xnu-344.32.tar.gz
[apple/xnu.git] / osfmk / kern / zalloc.h
index ae48dfcd9bb943de25c76626d90cc380aff90cac..74aeab881614e69495d9a46a88d69715dff3ff0a 100644 (file)
 #include <mach/machine/vm_types.h>
 #include <kern/kern_types.h>
 
-#ifdef MACH_KERNEL_PRIVATE
+#include <sys/appleapiopts.h>
+
+#ifdef __APPLE_API_PRIVATE
+
+#ifdef MACH_KERNEL_PRIVATE
+
 #include <zone_debug.h>
 #include <mach_kdb.h>
 #include <kern/lock.h>
 #include <kern/queue.h>
+#include <kern/call_entry.h>
 
 /*
  *     A zone is a collection of fixed size blocks for which there
@@ -90,15 +96,16 @@ struct zone {
        /* boolean_t */ expandable :1,  /* (T) expand zone (with message)? */
        /* boolean_t */ allows_foreign :1,/* (F) allow non-zalloc space */
        /* boolean_t */ doing_alloc :1, /* is zone expanding now? */
-       /* boolean_t */ waiting :1;     /* is thread waiting for expansion? */
+       /* boolean_t */ waiting :1,     /* is thread waiting for expansion? */
+       /* boolean_t */ async_pending :1;       /* asynchronous allocation pending? */
        struct zone *   next_zone;      /* Link for all-zones list */
+       call_entry_data_t       call_async_alloc;       /* callout for asynchronous alloc */
 #if    ZONE_DEBUG
        queue_head_t    active_zones;   /* active elements */
 #endif /* ZONE_DEBUG */
        decl_simple_lock_data(,lock)            /* generic lock */
 };
 
-
 extern void            zone_gc(void);
 extern void            consider_zone_gc(void);
 
@@ -111,8 +118,9 @@ extern void         zone_bootstrap(void);
 /* Init zone module */
 extern void            zone_init(vm_size_t);
 
-#endif /* MACH_KERNEL_PRIVATE */
+#endif /* MACH_KERNEL_PRIVATE */
 
+#endif /* __APPLE_API_PRIVATE */
 
 /* Allocate from zone */
 extern vm_offset_t     zalloc(
@@ -176,22 +184,34 @@ extern integer_t              zone_free_count(zone_t zone);
 #define Z_EXPAND       3       /* Make zone expandable         */
 #define        Z_FOREIGN       4       /* Allow collectable zone to contain foreign */
                                /* (not allocated via zalloc) elements. */
-#ifdef MACH_KERNEL_PRIVATE
+
+#ifdef __APPLE_API_PRIVATE
+
+#ifdef MACH_KERNEL_PRIVATE
+
 #if    ZONE_DEBUG
+
 #if    MACH_KDB
+
 extern vm_offset_t     next_element(
                                zone_t          z,
                                vm_offset_t     elt);
 
 extern vm_offset_t     first_element(
                                zone_t          z);
+
 #endif /* MACH_KDB */
+
 extern void            zone_debug_enable(
                                zone_t          z);
 
 extern void            zone_debug_disable(
                                zone_t          z);
+
 #endif /* ZONE_DEBUG */
-#endif MACH_KERNEL_PRIVATE
+
+#endif MACH_KERNEL_PRIVATE
+
+#endif /* __APPLE_API_PRIVATE */
 
 #endif /* _KERN_ZALLOC_H_ */