7#ifndef KERNEL_SEMAPHORE_H
8#define KERNEL_SEMAPHORE_H
10#include <kernel/spinlock.h>
11#include <kernel/waitqueue.h>
23#define INIT_SEMAPHORE(_name, _count) \
24 _name = ((struct semaphore){ \
26 __INIT_SPINLOCK(.lock), \
27 .waitqueue = __WAITQUEUE_INIT(_name.waitqueue), \
31#define DECLARE_SEMAPHORE(_name, _count) \
32 struct semaphore _name = SEMAPHORE_INIT(_count)
35#define INIT_MUTEX(_name) INIT_SEMAPHORE(_name, 1)
38#define DECLARE_MUTEX(_name) semaphore_t INIT_MUTEX(_name)
50void semaphore_release(
struct semaphore *);
A semaphore.
Definition: semaphore.h:14
Spinlock.
Definition: spinlock.h:29
Waiting Queue.
Definition: waitqueue.h:39