#ifndef _KERN_KERN_TYPES_H_
#define _KERN_KERN_TYPES_H_
#include <stdint.h>
#include <mach/mach_types.h>
#include <mach/machine/vm_types.h>
#ifdef KERNEL_PRIVATE
#ifndef MACH_KERNEL_PRIVATE
struct zone ;
#ifndef __LP64__
struct wait_queue { unsigned int opaque[2]; uintptr_t opaquep[2]; } ;
#else
struct wait_queue { unsigned char opaque[32]; };
#endif
#endif
typedef struct zone *zone_t;
#define ZONE_NULL ((zone_t) 0)
typedef struct wait_queue *wait_queue_t;
#define WAIT_QUEUE_NULL ((wait_queue_t) 0)
#define SIZEOF_WAITQUEUE sizeof(struct wait_queue)
typedef vm_offset_t ipc_kobject_t;
#define IKO_NULL ((ipc_kobject_t) 0)
#endif
typedef void *event_t;
#define NO_EVENT ((event_t) 0)
typedef uint64_t event64_t;
#define NO_EVENT64 ((event64_t) 0)
#define CAST_EVENT64_T(a_ptr) ((event64_t)((uintptr_t)(a_ptr)))
typedef int wait_result_t;
#define THREAD_WAITING -1
#define THREAD_AWAKENED 0
#define THREAD_TIMED_OUT 1
#define THREAD_INTERRUPTED 2
#define THREAD_RESTART 3
#define THREAD_NOT_WAITING 10
typedef void (*thread_continue_t)(void *, wait_result_t);
#define THREAD_CONTINUE_NULL ((thread_continue_t) 0)
typedef int wait_interrupt_t;
#define THREAD_UNINT 0
#define THREAD_INTERRUPTIBLE 1
#define THREAD_ABORTSAFE 2
#ifdef KERNEL_PRIVATE
#ifdef MACH_KERNEL_PRIVATE
#include <kern/misc_protos.h>
typedef struct clock *clock_t;
typedef struct mig_object *mig_object_t;
#define MIG_OBJECT_NULL ((mig_object_t) 0)
typedef struct mig_notify *mig_notify_t;
#define MIG_NOTIFY_NULL ((mig_notify_t) 0)
typedef struct pset_node *pset_node_t;
#define PSET_NODE_NULL ((pset_node_t) 0)
typedef struct affinity_set *affinity_set_t;
#define AFFINITY_SET_NULL ((affinity_set_t) 0)
#else
struct wait_queue_set ;
struct _wait_queue_link ;
#endif
typedef struct wait_queue_set *wait_queue_set_t;
#define WAIT_QUEUE_SET_NULL ((wait_queue_set_t)0)
#define SIZEOF_WAITQUEUE_SET wait_queue_set_size()
typedef struct _wait_queue_link *wait_queue_link_t;
#define WAIT_QUEUE_LINK_NULL ((wait_queue_link_t)0)
#define SIZEOF_WAITQUEUE_LINK wait_queue_link_size()
struct wait_queue_sub ;
typedef struct wait_queue_sub *wait_queue_sub_t;
#define WAIT_QUEUE_SUB_NULL ((wait_queue_sub_t)0)
#define SIZEOF_WAITQUEUE_SUB wait_queue_set_size()
#endif
#endif