]> git.saurik.com Git - apple/xnu.git/blobdiff - osfmk/kern/sync_sema.h
xnu-3789.60.24.tar.gz
[apple/xnu.git] / osfmk / kern / sync_sema.h
index 1da09b0f3705c256bda3598fefa067891601cd07..2187c6bae69b5e795088f390d4deb448b3e38a03 100644 (file)
 #ifdef MACH_KERNEL_PRIVATE
 
 #include <kern/queue.h>
-#include <kern/lock.h>
-#include <kern/wait_queue.h>
+#include <kern/waitq.h>
 
 typedef struct semaphore {
        queue_chain_t     task_link;  /* chain of semaphores owned by a task */
-       struct wait_queue wait_queue; /* queue of blocked threads & lock     */
+       struct waitq      waitq;      /* queue of blocked threads & lock     */
        task_t            owner;      /* task that owns semaphore            */
        ipc_port_t        port;       /* semaphore port                      */
        uint32_t          ref_count;  /* reference count                     */
@@ -58,13 +57,14 @@ typedef struct semaphore {
        boolean_t         active;     /* active status                       */
 } Semaphore;
 
-#define semaphore_lock(semaphore)   wait_queue_lock(&(semaphore)->wait_queue)
-#define semaphore_unlock(semaphore) wait_queue_unlock(&(semaphore)->wait_queue)
+#define semaphore_lock(semaphore)   waitq_lock(&(semaphore)->waitq)
+#define semaphore_unlock(semaphore) waitq_unlock(&(semaphore)->waitq)
 
-extern void semaphore_init(void) __attribute__((section("__TEXT, initcode")));
+extern void semaphore_init(void);
 
-extern void            semaphore_reference     (semaphore_t semaphore);
-extern void            semaphore_dereference   (semaphore_t semaphore);
+extern void            semaphore_reference(semaphore_t semaphore);
+extern void            semaphore_dereference(semaphore_t semaphore);
+extern void            semaphore_destroy_all(task_t task);
 
 #endif /* MACH_KERNEL_PRIVATE */