36#define semup(semid, index) \
38 struct sembuf op = {(unsigned short)(index), 1, 0}; \
39 MO(semop(semid, &op, 1)); \
49#define semdown(semid, index) \
51 struct sembuf op = {(unsigned short)(index), -1, 0}; \
52 MO(semop(semid, &op, 1)); \
68#define semdown2(semid, index1, index2) \
70 require (index1 != index2, "both semaphore indexes are equal!"); \
71 struct sembuf ops[2] = {{(unsigned short)(index1), -1, 0}, {(unsigned short)(index2), -1, 0}}; \
72 MO(semop(semid, ops, 2)); \
88#define semupdown(semid, up_index, down_index) \
90 require (up_index != down_index, "both semaphore indexes are equal!"); \
91 struct sembuf ops[2] = {{(unsigned short)(up_index), 1, 0}, {(unsigned short)(down_index), -1, 0}}; \
92 MO(semop(semid, ops, 2)); \
103#define semsetval(semid, index, value) \
107 struct semid_ds *buf; \
108 unsigned short *array; \
110 semopts.val = value; \
111 MO(semctl(semid, index, SETVAL, semopts)); \
Design-by-Contract module.
Handle Defensive Programming module.