#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
/* 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);
/* 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(
#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_ */