#include <semaphore.h>
Go to the source code of this file.
◆ SIPC_MAX_SEMAPHORES
#define SIPC_MAX_SEMAPHORES 256 |
◆ USE_SEM_INIT
◆ sipc_sem_t
◆ simpleipc_cmd()
int simpleipc_cmd |
( |
char * |
cmd, |
|
|
int |
id, |
|
|
int |
v |
|
) |
| |
Definition at line 167 of file semaphore.c.
169 if (strcmp(cmd,
"init")==0)
171 else if (strcmp(cmd,
"exists")==0)
173 else if (strcmp(cmd,
"acquire")==0)
175 else if (strcmp(cmd,
"try_acquire")==0)
177 else if (strcmp(cmd,
"release")==0)
179 else if (strcmp(cmd,
"get_value")==0)
181 else printf(
"unknown\n");
int sipc_semaphore_get_value(int id)
int sipc_semaphore_try_acquire(int id)
int sipc_semaphore_exists(int id)
int sipc_semaphore_init(int id, int count)
int sipc_semaphore_release(int id)
const Variable & v
< [in] a sqrfree bivariate poly
int sipc_semaphore_acquire(int id)
◆ sipc_semaphore_acquire()
int sipc_semaphore_acquire |
( |
int |
id | ) |
|
Definition at line 94 of file semaphore.c.
98 #if PORTABLE_SEMAPHORES sipc_sem_t * semaphore[SIPC_MAX_SEMAPHORES]
volatile BOOLEAN do_shutdown
#define SIPC_MAX_SEMAPHORES
volatile int defer_shutdown
int sem_acquired[SIPC_MAX_SEMAPHORES]
◆ sipc_semaphore_exists()
int sipc_semaphore_exists |
( |
int |
id | ) |
|
Definition at line 88 of file semaphore.c.
sipc_sem_t * semaphore[SIPC_MAX_SEMAPHORES]
#define SIPC_MAX_SEMAPHORES
◆ sipc_semaphore_get_value()
int sipc_semaphore_get_value |
( |
int |
id | ) |
|
Definition at line 153 of file semaphore.c.
157 #if PORTABLE_SEMAPHORES sipc_sem_t * semaphore[SIPC_MAX_SEMAPHORES]
#define SIPC_MAX_SEMAPHORES
◆ sipc_semaphore_init()
int sipc_semaphore_init |
( |
int |
id, |
|
|
int |
count |
|
) |
| |
Definition at line 31 of file semaphore.c.
45 sem =
malloc(
sizeof(sem_t));
48 if (sem_init(sem, 1,
count) < 0)
54 #if PORTABLE_SEMAPHORES 56 #define MAP_ANONYMOUS MAP_ANON 58 sem = mmap(
NULL, getpagesize(),
59 PROT_READ|PROT_WRITE, MAP_ANONYMOUS|MAP_SHARED, -1, 0);
60 if (sem == MAP_FAILED)
63 sprintf(
buf,
"/%d:sem%d:g", getpid(),
id);
65 sem->guard = sem_open(
buf, O_CREAT, 0600,
count);
67 sprintf(
buf,
"/%d:sem%d:s", getpid(),
id);
69 sem->sig = sem_open(
buf, O_CREAT, 0600,
count);
72 sprintf(
buf,
"/%d:sem%d", getpid(),
id);
74 sem = sem_open(
buf, O_CREAT, 0600,
count);
77 #if !PORTABLE_SEMAPHORES 78 if (sem == SEM_FAILED || !sem)
int status int void size_t count
sipc_sem_t * semaphore[SIPC_MAX_SEMAPHORES]
int status int void * buf
void * malloc(size_t size)
#define SIPC_MAX_SEMAPHORES
◆ sipc_semaphore_release()
int sipc_semaphore_release |
( |
int |
id | ) |
|
Definition at line 135 of file semaphore.c.
139 #if PORTABLE_SEMAPHORES sipc_sem_t * semaphore[SIPC_MAX_SEMAPHORES]
volatile BOOLEAN do_shutdown
#define SIPC_MAX_SEMAPHORES
volatile int defer_shutdown
int sem_acquired[SIPC_MAX_SEMAPHORES]
◆ sipc_semaphore_try_acquire()
int sipc_semaphore_try_acquire |
( |
int |
id | ) |
|
Definition at line 112 of file semaphore.c.
116 #if PORTABLE_SEMAPHORES 117 int trywait = si_sem_trywait(
semaphore[
id]->sig);
119 int trywait = si_sem_trywait(
semaphore[
id]);
123 #if PORTABLE_SEMAPHORES sipc_sem_t * semaphore[SIPC_MAX_SEMAPHORES]
volatile BOOLEAN do_shutdown
#define SIPC_MAX_SEMAPHORES
volatile int defer_shutdown
int sem_acquired[SIPC_MAX_SEMAPHORES]
◆ sem_acquired
◆ semaphore