10 #include <sys/types.h>
14 #include <sys/types.h>
50 sem =
malloc(
sizeof(sem_t));
53 if (sem_init(sem, 1, count) < 0)
59 sprintf(buf,
"/%d:sem%d", getpid(),
id);
61 sem = sem_open(buf, O_CREAT, 0600, count);
63 if (sem == SEM_FAILED || !sem)
93 int trywait = si_sem_trywait(
semaphore[
id]);
124 if (strcmp(cmd,
"init")==0)
126 else if (strcmp(cmd,
"exists")==0)
128 else if (strcmp(cmd,
"acquire")==0)
130 else if (strcmp(cmd,
"try_acquire")==0)
132 else if (strcmp(cmd,
"release")==0)
134 else if (strcmp(cmd,
"get_value")==0)
136 else printf(
"unknown\n");
int status int void size_t count
int sipc_semaphore_get_value(int id)
int sipc_semaphore_try_acquire(int id)
int sipc_semaphore_exists(int id)
sem_t * semaphore[SIPC_MAX_SEMAPHORES]
volatile BOOLEAN do_shutdown
int status int void * buf
void * malloc(size_t size)
int simpleipc_cmd(char *cmd, int id, int v)
int sipc_semaphore_init(int id, int count)
int sipc_semaphore_release(int id)
const Variable & v
< [in] a sqrfree bivariate poly
#define SIPC_MAX_SEMAPHORES
volatile int defer_shutdown
int sem_acquired[SIPC_MAX_SEMAPHORES]
int sipc_semaphore_acquire(int id)