The mqueue test has been atf-ified
This commit is contained in:
parent
993bb41987
commit
c7bda8e080
@ -1,16 +0,0 @@
|
|||||||
# $NetBSD: Makefile,v 1.2 2009/07/19 02:31:19 rmind Exp $
|
|
||||||
#
|
|
||||||
PROG= mq_prio_test
|
|
||||||
NOMAN= # defined
|
|
||||||
WARNS= 4
|
|
||||||
LDADD= -lrt
|
|
||||||
|
|
||||||
regress:
|
|
||||||
@/sbin/sysctl -w kern.mqueue.mq_prio_max=33
|
|
||||||
@if ./$(PROG); then \
|
|
||||||
echo "PASSED"; \
|
|
||||||
else \
|
|
||||||
echo "FAILED"; \
|
|
||||||
fi
|
|
||||||
|
|
||||||
.include <bsd.prog.mk>
|
|
@ -1,122 +0,0 @@
|
|||||||
/* $NetBSD: mq_prio_test.c,v 1.2 2009/07/19 02:31:19 rmind Exp $ */
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Test for POSIX message queue priority handling.
|
|
||||||
*
|
|
||||||
* This file is in the Public Domain.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <err.h>
|
|
||||||
|
|
||||||
#include <mqueue.h>
|
|
||||||
#include <assert.h>
|
|
||||||
|
|
||||||
#define MQUEUE "/mq_prio_test"
|
|
||||||
#define MQ_PRIO_BOUNDARY 31
|
|
||||||
|
|
||||||
static void
|
|
||||||
send_msgs(mqd_t mqfd)
|
|
||||||
{
|
|
||||||
char msg[2];
|
|
||||||
|
|
||||||
msg[1] = '\0';
|
|
||||||
|
|
||||||
msg[0] = 'a';
|
|
||||||
if (mq_send(mqfd, msg, sizeof(msg), MQ_PRIO_BOUNDARY) == -1)
|
|
||||||
err(EXIT_FAILURE, "mq_send 1");
|
|
||||||
|
|
||||||
msg[0] = 'b';
|
|
||||||
if (mq_send(mqfd, msg, sizeof(msg), MQ_PRIO_BOUNDARY + 1) == -1)
|
|
||||||
err(EXIT_FAILURE, "mq_send 2");
|
|
||||||
|
|
||||||
msg[0] = 'c';
|
|
||||||
if (mq_send(mqfd, msg, sizeof(msg), MQ_PRIO_BOUNDARY) == -1)
|
|
||||||
err(EXIT_FAILURE, "mq_send 3");
|
|
||||||
|
|
||||||
msg[0] = 'd';
|
|
||||||
if (mq_send(mqfd, msg, sizeof(msg), MQ_PRIO_BOUNDARY - 1) == -1)
|
|
||||||
err(EXIT_FAILURE, "mq_send 4");
|
|
||||||
|
|
||||||
msg[0] = 'e';
|
|
||||||
if (mq_send(mqfd, msg, sizeof(msg), 0) == -1)
|
|
||||||
err(EXIT_FAILURE, "mq_send 5");
|
|
||||||
|
|
||||||
msg[0] = 'f';
|
|
||||||
if (mq_send(mqfd, msg, sizeof(msg), MQ_PRIO_BOUNDARY + 1) == -1)
|
|
||||||
err(EXIT_FAILURE, "mq_send 6");
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
receive_msgs(mqd_t mqfd)
|
|
||||||
{
|
|
||||||
struct mq_attr mqa;
|
|
||||||
char *m;
|
|
||||||
unsigned p;
|
|
||||||
int len;
|
|
||||||
|
|
||||||
if (mq_getattr(mqfd, &mqa) == -1) {
|
|
||||||
err(EXIT_FAILURE, "mq_getattr");
|
|
||||||
}
|
|
||||||
len = mqa.mq_msgsize;
|
|
||||||
m = calloc(1, len);
|
|
||||||
if (m == NULL) {
|
|
||||||
err(EXIT_FAILURE, "calloc");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (mq_receive(mqfd, m, len, &p) == -1) {
|
|
||||||
err(EXIT_FAILURE, "mq_receive 1");
|
|
||||||
}
|
|
||||||
assert(p == (MQ_PRIO_BOUNDARY + 1) && m[0] == 'b');
|
|
||||||
|
|
||||||
if (mq_receive(mqfd, m, len, &p) == -1) {
|
|
||||||
err(EXIT_FAILURE, "mq_receive 2");
|
|
||||||
}
|
|
||||||
assert(p == (MQ_PRIO_BOUNDARY + 1) && m[0] == 'f');
|
|
||||||
|
|
||||||
if (mq_receive(mqfd, m, len, &p) == -1) {
|
|
||||||
err(EXIT_FAILURE, "mq_receive 3");
|
|
||||||
}
|
|
||||||
assert(p == MQ_PRIO_BOUNDARY && m[0] == 'a');
|
|
||||||
|
|
||||||
if (mq_receive(mqfd, m, len, &p) == -1) {
|
|
||||||
err(EXIT_FAILURE, "mq_receive 4");
|
|
||||||
}
|
|
||||||
assert(p == MQ_PRIO_BOUNDARY && m[0] == 'c');
|
|
||||||
|
|
||||||
if (mq_receive(mqfd, m, len, &p) == -1) {
|
|
||||||
err(EXIT_FAILURE, "mq_receive 5");
|
|
||||||
}
|
|
||||||
assert(p == (MQ_PRIO_BOUNDARY - 1) && m[0] == 'd');
|
|
||||||
|
|
||||||
if (mq_receive(mqfd, m, len, &p) == -1) {
|
|
||||||
err(EXIT_FAILURE, "mq_receive 6");
|
|
||||||
}
|
|
||||||
assert(p == 0 && m[0] == 'e');
|
|
||||||
|
|
||||||
free(m);
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
|
||||||
main(int argc, char **argv)
|
|
||||||
{
|
|
||||||
mqd_t mqfd;
|
|
||||||
|
|
||||||
(void)mq_unlink(MQUEUE);
|
|
||||||
|
|
||||||
mqfd = mq_open(MQUEUE, O_RDWR | O_CREAT,
|
|
||||||
S_IRUSR | S_IRWXG | S_IROTH, NULL);
|
|
||||||
if (mqfd == -1)
|
|
||||||
err(EXIT_FAILURE, "mq_open");
|
|
||||||
|
|
||||||
send_msgs(mqfd);
|
|
||||||
receive_msgs(mqfd);
|
|
||||||
|
|
||||||
mq_close(mqfd);
|
|
||||||
|
|
||||||
if (mq_unlink(MQUEUE) == -1)
|
|
||||||
err(EXIT_FAILURE, "mq_unlink");
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
Loading…
Reference in New Issue
Block a user