]> CyberLeo.Net >> Repos - FreeBSD/releng/10.0.git/blob - tools/regression/mqueue/mqtest1/mqtest1.c
- Copy stable/10 (r259064) to releng/10.0 as part of the
[FreeBSD/releng/10.0.git] / tools / regression / mqueue / mqtest1 / mqtest1.c
1 /* $FreeBSD$ */
2
3 #include <err.h>
4 #include <errno.h>
5 #include <fcntl.h>
6 #include <mqueue.h>
7 #include <signal.h>
8 #include <stdio.h>
9
10 #define MQNAME  "/mytstqueue1"
11
12 int main()
13 {
14         struct mq_attr attr, attr2;
15         struct sigevent sigev;
16         mqd_t mq;
17         int status;
18
19         attr.mq_maxmsg  = 2;
20         attr.mq_msgsize = 100;
21         mq = mq_open(MQNAME, O_CREAT | O_RDWR | O_EXCL, 0666, &attr);
22         if (mq == (mqd_t)-1)
23                 err(1, "mq_open");
24         status = mq_unlink(MQNAME);
25         if (status)
26                 err(1, "mq_unlink");
27         status = mq_getattr(mq, &attr2);
28         if (status)
29                 err(1, "mq_getattr");
30         if (attr.mq_maxmsg != attr2.mq_maxmsg)
31                 err(1, "mq_maxmsg changed");
32         if (attr.mq_msgsize != attr2.mq_msgsize)
33                 err(1, "mq_msgsize changed");
34
35         sigev.sigev_notify = SIGEV_SIGNAL;
36         sigev.sigev_signo = SIGRTMIN;
37         status = mq_notify(mq, &sigev);
38         if (status)
39                 err(1, "mq_notify");
40         status = mq_notify(mq, &sigev);
41         if (status == 0)
42                 err(1, "mq_notify 2");
43         else if (errno != EBUSY)
44                 err(1, "mq_notify 3");
45         status = mq_notify(mq, NULL);
46         if (status)
47                 err(1, "mq_notify 4");
48         status = mq_close(mq);
49         if (status)
50                 err(1, "mq_close");
51         return (0);
52 }