From 4c67d0bba4347085ae71ff7d2ad57347e1d7c8ae Mon Sep 17 00:00:00 2001 From: Oleg Borodin Date: Tue, 30 Aug 2022 16:26:29 +0200 Subject: [PATCH] added primitive semaphore --- semaphore.c | 23 +++++++++++++++++++++++ semaphore.h | 12 ++++++++++++ 2 files changed, 35 insertions(+) create mode 100644 semaphore.c create mode 100644 semaphore.h diff --git a/semaphore.c b/semaphore.c new file mode 100644 index 0000000..f6b885a --- /dev/null +++ b/semaphore.c @@ -0,0 +1,23 @@ +/* + * Copyright 2022 Oleg Borodin + */ + +#include "semaphore.h" + +typedef struct { + int value; +} sem_t; + +int sem_init(sem_t* sem, int value) { + sem->value = value; +} + +int sem_wait(sem_t* sem) { + while(sem->value > 0); + sem->value--; +} + + +int sem_post(sem_t* sem) { + sem->value++; +} diff --git a/semaphore.h b/semaphore.h new file mode 100644 index 0000000..0cf2b8e --- /dev/null +++ b/semaphore.h @@ -0,0 +1,12 @@ +/* + * Copyright 2022 Oleg Borodin + */ + + +typedef struct { + int value; +} sem_t; + +int sem_init(sem_t* sem, int value); +int sem_wait(sem_t* sem); +int sem_post(sem_t* sem);