+#endif /* MACH_KERNEL_PRIVATE */
+
+__BEGIN_DECLS
+
+/******** Semi-Public interfaces (not a part of a higher construct) ************/
+
+extern unsigned int wait_queue_set_size(void);
+extern unsigned int wait_queue_link_size(void);
+
+extern kern_return_t wait_queue_init(
+ wait_queue_t wait_queue,
+ int policy);
+
+extern wait_queue_set_t wait_queue_set_alloc(
+ int policy);
+
+extern kern_return_t wait_queue_set_init(
+ wait_queue_set_t set_queue,
+ int policy);
+
+extern kern_return_t wait_queue_set_free(
+ wait_queue_set_t set_queue);
+
+extern wait_queue_link_t wait_queue_link_alloc(
+ int policy);
+
+extern kern_return_t wait_queue_link_free(
+ wait_queue_link_t link_element);
+
+extern kern_return_t wait_queue_link(
+ wait_queue_t wait_queue,
+ wait_queue_set_t set_queue);
+
+extern kern_return_t wait_queue_link_noalloc(
+ wait_queue_t wait_queue,
+ wait_queue_set_t set_queue,
+ wait_queue_link_t link);
+
+extern boolean_t wait_queue_member(
+ wait_queue_t wait_queue,
+ wait_queue_set_t set_queue);
+
+extern kern_return_t wait_queue_unlink(
+ wait_queue_t wait_queue,
+ wait_queue_set_t set_queue);
+
+extern kern_return_t wait_queue_unlink_all(
+ wait_queue_t wait_queue);
+
+extern kern_return_t wait_queue_unlinkall_nofree(
+ wait_queue_t wait_queue);
+
+extern kern_return_t wait_queue_set_unlink_all(
+ wait_queue_set_t set_queue);
+
+/* legacy API */
+kern_return_t wait_queue_sub_init(
+ wait_queue_set_t set_queue,
+ int policy);
+
+kern_return_t wait_queue_sub_clearrefs(
+ wait_queue_set_t wq_set);
+
+extern kern_return_t wait_subqueue_unlink_all(
+ wait_queue_set_t set_queue);