From ae4b848ba00d7fa49de4ea619e9e90e3eaa68354 Mon Sep 17 00:00:00 2001 From: Ryo Nakamura Date: Wed, 15 Mar 2023 23:54:57 +0900 Subject: add sem_create(), wrappign sem_init() for linux and sem_open() for macOS --- src/platform.h | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) (limited to 'src/platform.h') diff --git a/src/platform.h b/src/platform.h index b4fb1b1..4905db0 100644 --- a/src/platform.h +++ b/src/platform.h @@ -2,13 +2,20 @@ #define _PLATFORM_H_ #include - -#ifndef PSEMNAMLEN /* defined in macOS, but not in Linux */ -#define PSEMNAMLEN 31 -#endif +#include int nr_cpus(void); int set_thread_affinity(pthread_t tid, int core); -int get_random(int max); + +/* + * macOS does not support sem_init(). macOS (seems to) releases the + * named semaphore when associated mscp process finished. In linux, + * program (seems to) need to release named semaphore in /dev/shm by + * sem_unlink() explicitly. So, using sem_init() (unnamed semaphore) + * in linux and using sem_open() (named semaphore) in macOS without + * sem_unlink() are reasonable (?). + */ +sem_t *sem_create(int value); +int sem_release(sem_t *sem); #endif /* _PLATFORM_H_ */ -- cgit v1.2.3