+#if (KDEBUG_LEVEL >= KDEBUG_LEVEL_FULL)
+#ifdef XNU_KERNEL_PRIVATE
+#define KERNEL_DEBUG(x,a,b,c,d,e) \
+do { \
+ if (__improbable(kdebug_enable & ~KDEBUG_ENABLE_PPT)) \
+ kernel_debug((uint32_t)x, (uintptr_t)a, (uintptr_t)b, \
+ (uintptr_t)c, (uintptr_t)d, (uintptr_t)e); \
+} while(0)
+
+#define KERNEL_DEBUG1(x,a,b,c,d,e) \
+do { \
+ if (__improbable(kdebug_enable & ~KDEBUG_ENABLE_PPT)) \
+ kernel_debug1((uint32_t)x, (uintptr_t)a, (uintptr_t)b, \
+ (uintptr_t)c, (uintptr_t)d, (uintptr_t)e); \
+} while(0)
+
+#define __kdebug_only
+#else /* !XNU_KERNEL_PRIVATE */
+#define KERNEL_DEBUG(x,a,b,c,d,e) \
+do { \
+ if (kdebug_enable & ~KDEBUG_ENABLE_PPT) \
+ kernel_debug((uint32_t)x, (uintptr_t)a, (uintptr_t)b, \
+ (uintptr_t)c, (uintptr_t)d, (uintptr_t)e); \
+} while(0)
+
+#define KERNEL_DEBUG1(x,a,b,c,d,e) \
+do { \
+ if (kdebug_enable & ~KDEBUG_ENABLE_PPT) \
+ kernel_debug1((uint32_t)x, (uintptr_t)a, (uintptr_t)b, \
+ (uintptr_t)c, (uintptr_t)d, (uintptr_t)e); \
+} while(0)
+#endif /* XNU_KERNEL_PRIVATE */
+
+#else /* (KDEBUG_LEVEL >= KDEBUG_LEVEL_FULL) */
+
+#define KERNEL_DEBUG(x,a,b,c,d,e) do {} while (0)
+#define KERNEL_DEBUG1(x,a,b,c,d,e) do {} while (0)
+
+#define __kdebug_only __unused
+#endif /* (KDEBUG_LEVEL >= KDEBUG_LEVEL_FULL) */
+
+
+// for EnergyTracing user space & clients
+#define kEnTrCompKernel 2
+
+/*
+ EnergyTracing opcodes
+
+ Activations use DBG_FUNC_START/END.
+ Events are DBG_FUNC_NONE.
+ */
+
+/* Socket reads and writes are uniquely identified by the (sanitized)
+ pointer to the socket struct in question. To associate this address
+ with the user space file descriptor, we have a socket activation with
+ the FD as its identifier and the socket struct pointer as its value.
+*/
+#define kEnTrActKernSocket 1
+#define kEnTrActKernSockRead 2
+#define kEnTrActKernSockWrite 3
+
+#define kEnTrActKernPoll 10
+#define kEnTrActKernSelect 11
+#define kEnTrActKernKQWait 12
+
+// events
+#define kEnTrEvUnblocked 256
+
+// EnergyTracing flags (the low-order 16 bits of 'quality')
+#define kEnTrFlagNonBlocking 1 << 0
+#define kEnTrFlagNoWork 1 << 1
+
+// and now the internal mechanism
+#ifdef KERNEL_PRIVATE
+
+// 20452597 requests that the trace macros not take an argument it throws away
+#define KERNEL_DBG_IST_SANE(x, a, b, c, d) \
+ KERNEL_DEBUG_CONSTANT_IST(KDEBUG_TRACE, x, a, b, c, d, \
+ 0 /*__unused in kernel_debug()*/)
+#define ENTR_KDTRACEFUNC KERNEL_DBG_IST_SANE
+
+// value is int64_t, quality is uint32_t
+#define KERNEL_ENERGYTRACE(opcode, lifespan, id, quality, value) \
+ ENTR_KDTRACE(kEnTrCompKernel, opcode, lifespan, id, \
+ quality, value)
+#define KERNEL_ENTR_ASSOCIATE(par_opcode, par_act_id, sub_opcode, sub_act_id) \
+ ENTR_KDASSOCIATE(kEnTrCompKernel, par_opcode, par_act_id, \
+ kEnTrCompKernel, sub_opcode, sub_act_id)
+
+// end EnergyTracing
+
+
+#include <mach/boolean.h>
+
+#define NUMPARMS 23
+
+struct proc;
+
+extern void kdebug_lookup_gen_events(long *dbg_parms, int dbg_namelen, void *dp, boolean_t lookup);
+extern void kdbg_trace_data(struct proc *proc, long *arg_pid);
+
+extern void kdbg_trace_string(struct proc *proc, long *arg1, long *arg2, long *arg3, long *arg4);
+
+extern void kdbg_dump_trace_to_file(const char *);
+void start_kern_tracing(unsigned int, boolean_t);
+void start_kern_tracing_with_typefilter(unsigned int, boolean_t, unsigned int);
+struct task;
+extern void kdbg_get_task_name(char*, int, struct task *task);
+void disable_wrap(uint32_t *old_slowcheck, uint32_t *old_flags);
+void enable_wrap(uint32_t old_slowcheck, boolean_t lostevents);
+void release_storage_unit(int cpu, uint32_t storage_unit);
+int allocate_storage_unit(int cpu);
+
+#define KDBG_CLASS_ENCODE(Class, SubClass) KDBG_EVENTID(Class, SubClass, 0)
+#define KDBG_CLASS_DECODE(Debugid) (Debugid & KDBG_CSC_MASK)
+
+
+#endif /* KERNEL_PRIVATE */
+
+