1
/*-------------------------------------------------------------------------
4
* Test of System V Semaphore Emulation
6
* Copyright (c) 1999, repas AEG Automation GmbH
10
* $PostgreSQL: pgsql/src/backend/port/qnx4/tstsem.c,v 1.10 2003-11-29 19:51:54 pgsql Exp $
12
*-------------------------------------------------------------------------
19
#include "storage/ipc.h"
27
int MaxBackends = SEMMAX;
32
sig_handler(int sig_no)
35
int i = semctl(semid, 0, GETNCNT, arg);
40
printf("semval = %d\n", i);
43
void on_proc_exit(void (*function) (), Datum arg)
48
main(int argc, char **argv)
53
key_t key = IPC_PRIVATE;
58
struct sembuf sops[OPSMAX];
59
u_short array[SEMMAX];
63
while (!errflg && (c = getopt(argc, argv, "k:n:cxu")) != -1)
88
printf("usage: tstsem [-k key] [-n nsems] [-cxu]\n");
94
i = shm_unlink("SysV_Sem_Info");
100
semid = semget(key, nsems, semflg);
107
/* test signal interrupts */
108
signal(SIGTERM, sig_handler);
112
printf("(-)sem_op, (+)sem_op, (G)ETVAL, (S)ETVAL, GET(P)ID, GET(A)LL, SETA(L)L, GET(N)CNT, GET(Z)CNT, e(x)it: ");
119
sops[0].sem_op = atoi(s);
120
if (sops[0].sem_op == 0)
121
sops[0].sem_op = s[0] == '+' ? +1 : -1;
123
if (semop(semid, sops, 1) == -1)
129
i = semctl(semid, 0, GETVAL, arg);
133
printf("semval = %d\n", i);
139
scanf("%d", &arg.val);
140
if (semctl(semid, 0, SETVAL, arg) == -1)
146
i = semctl(semid, 0, GETPID, arg);
150
printf("PID = %d\n", i);
156
i = semctl(semid, 0, GETALL, arg);
161
for (i = 0; i < nsems; i++)
162
printf("semval[%d] = %hu\n", i, arg.array[i]);
169
for (i = 0; i < nsems; i++)
171
printf("semval[%d] = ", i);
172
scanf("%hu", &arg.array[i]);
174
if (semctl(semid, 0, SETALL, arg) == -1)
180
i = semctl(semid, 0, GETNCNT, arg);
184
printf("semval = %d\n", i);
189
i = semctl(semid, 0, GETZCNT, arg);
193
printf("semval = %d\n", i);
199
if (semctl(semid, 0, IPC_RMID, arg) == -1)