2
0
mirror of https://gitlab.com/apparmor/apparmor synced 2025-08-22 10:07:12 +00:00
Georgia Garcia 3d422215ba tests: add sysv message queue regression tests
Signed-off-by: Georgia Garcia <georgia.garcia@canonical.com>
2022-11-22 19:31:15 +00:00

56 lines
1.1 KiB
C

#include "sysv_mq.h"
int main(int argc, char *argv[])
{
key_t mqkey = MQ_KEY;
key_t semkey = SEM_KEY;
long qtype = 1;
int qid, semid;
struct msg_buf mb;
if (argc != 1 && argc != 3) {
fprintf(stderr, "FAIL sender - specify values for message queue"
" key and semaphore key, respectively \n");
return EXIT_FAILURE;
}
if (argc > 1) {
mqkey = atoi(argv[1]);
semkey = atoi(argv[2]);
}
qid = msgget(mqkey, IPC_CREAT | OBJ_PERMS);
if (qid == -1) {
perror("FAIL sender - could not msgget");
exit(EXIT_FAILURE);
}
semid = semget(semkey, 1, IPC_CREAT | OBJ_PERMS);
if (semid == -1) {
perror("FAIL sender - could not get semaphore");
exit(EXIT_FAILURE);
}
snprintf(mb.mtext, sizeof(mb.mtext), "%s", msg);
mb.mtype = qtype;
if (msgsnd(qid, &mb, sizeof(struct msg_buf),
IPC_NOWAIT) == -1) {
perror("FAIL sender - could not msgsnd");
exit(EXIT_FAILURE);
}
/* notify using semaphore */
struct sembuf sop;
sop.sem_num = 0;
sop.sem_op = -1;
sop.sem_flg = 0;
if (semop(semid, &sop, 1) == -1) {
perror("FAIL sender - could not notify using semaphore");
exit(EXIT_FAILURE);
}
return EXIT_SUCCESS;
}