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