/*
- * semex.c --- System V semaphore exerciser
+ * semex.c --- System V and Linux semaphore exerciser
*
* by Eric S. Raymond <esr@snark.thyrsus.com>
*/
extern unsigned sleep();
/*
- * This will need to change if any future version changes the define values
+ * This will need to change if any future version changes the #define values
* of any UNIX error types. The highest value currently recognized is
* EIDRM; the code that uses it in errmsg() will issue a generic error type
* for higher values.
(void) sscanf(cmdline, "v %d %d\n", &semid, &semnum);
if (tty)
(void) printf("semctl(%d, %d, GETVAL) returns %d\n",
- semid, semnum, semctl(semid, semnum, GETVAL));
+ semid, semnum, semctl(semid, semnum, GETVAL, NULL));
break;
case 'p':
(void) sscanf(cmdline, "p %d %d\n", &semid, &semnum);
if (tty)
(void) printf("semctl(%d, %d, GETPID) returns %d\n",
- semid, semnum, semctl(semid, semnum, GETPID));
+ semid, semnum, semctl(semid, semnum, GETPID, NULL));
break;
case 'n':
(void) sscanf(cmdline, "n %d %d\n", &semid, &semnum);
if (tty)
(void) printf("semctl(%d, %d, GETNCNT) returns %d\n",
- semid, semnum, semctl(semid, semnum, GETNCNT));
+ semid, semnum, semctl(semid, semnum, GETNCNT, NULL));
break;
case 'z':
(void) sscanf(cmdline, "z %d %d\n", &semid, &semnum);
if (tty)
(void) printf("semctl(%d, %d, GETZCNT) returns %d\n",
- semid, semnum, semctl(semid, semnum, GETZCNT));
+ semid, semnum, semctl(semid, semnum, GETZCNT, NULL));
break;
case 's': /* set the value of a semaphore */
{
- union {
- int val;
- struct semid_ds *buf;
- unsigned short *array;
- } semval;
+ union semun semval;
semval.val = 0;
case 'r': /* delete an existing semaphore */
(void) sscanf(cmdline, "r %d", &semid);
- rv = semctl(semid, 0, IPC_RMID);
-
+ rv = semctl(semid, 0, IPC_RMID, NULL);
if (tty)
{
(void) printf("semctl(%d, 0, IPC_RMID) ", semid);