1#include <stdio.h>
2#include <stdlib.h>
3#include <sys/ipc.h>
4#include <sys/sem.h>
5#include <sys/stat.h>
6
7int main(void) {
8	key_t key;
9
10	if ((key = ftok(".", 1)) == (key_t)-1) {
11		perror("ftok");
12		exit(EXIT_FAILURE);
13	}
14
15	int semid;
16	if ((semid = semget(key, 1, IPC_CREAT | S_IRUSR | S_IWUSR)) == -1) {
17		perror("semget");
18		exit(EXIT_FAILURE);
19	}
20
21	union semun arg;
22
23	/* Test for sem value > SEMVMX */
24	arg.val = 32768;
25	if (semctl(semid, 0, SETVAL, arg) == 0) {
26		printf("semctl should have failed for SETVAL 32768\n");
27		exit(EXIT_FAILURE);
28	}
29
30	/* Test for sem value < 0 */
31	arg.val = -1;
32	if (semctl(semid, 0, SETVAL, arg) == 0) {
33		printf("semctl should have failed for SETVAL -1\n");
34		exit(EXIT_FAILURE);
35	}
36
37	return 0;
38}
39