sigqueue_queue_size.c revision 5e989a96186a37eb528fb7bb4d28a150874ec799
5e989a96186a37eb528fb7bb4d28a150874ec799David Höppner * This file and its contents are supplied under the terms of the
5e989a96186a37eb528fb7bb4d28a150874ec799David Höppner * Common Development and Distribution License ("CDDL"), version 1.0.
5e989a96186a37eb528fb7bb4d28a150874ec799David Höppner * You may only use this file in accordance with the terms of version
5e989a96186a37eb528fb7bb4d28a150874ec799David Höppner * 1.0 of the CDDL.
5e989a96186a37eb528fb7bb4d28a150874ec799David Höppner * A full copy of the text of the CDDL should have accompanied this
5e989a96186a37eb528fb7bb4d28a150874ec799David Höppner * source. A copy of the CDDL is also available via the Internet at
5e989a96186a37eb528fb7bb4d28a150874ec799David Höppner * Copyright 2013 David Hoeppner. All rights reserved.
5e989a96186a37eb528fb7bb4d28a150874ec799David Höppner * Queue maximum number of signals and test if we can queue more signals then
5e989a96186a37eb528fb7bb4d28a150874ec799David Höppner#define SIGQUEUE_SIGNAL SIGRTMIN /* Signal used for testing */
5e989a96186a37eb528fb7bb4d28a150874ec799David Höppnertest_start(const char *test_name, const char *format, ...)
5e989a96186a37eb528fb7bb4d28a150874ec799David Höppner (void) printf("TEST STARTING %s: ", test_name);
5e989a96186a37eb528fb7bb4d28a150874ec799David Höppnertest_failed(const char *test_name, const char *format, ...)
5e989a96186a37eb528fb7bb4d28a150874ec799David Höppner/* ARGSUSED */
5e989a96186a37eb528fb7bb4d28a150874ec799David Höppnermaximum_test_handler(int signal, siginfo_t *siginfo, void *context)
5e989a96186a37eb528fb7bb4d28a150874ec799David Höppner test_start(test_name, "queue maximum number of signals\n");
5e989a96186a37eb528fb7bb4d28a150874ec799David Höppner * Get the maximum size of the queue.
5e989a96186a37eb528fb7bb4d28a150874ec799David Höppner * Put the signal on hold.
5e989a96186a37eb528fb7bb4d28a150874ec799David Höppner * Set signal handler.
5e989a96186a37eb528fb7bb4d28a150874ec799David Höppner error = sigaction(SIGQUEUE_SIGNAL, &action, 0);
5e989a96186a37eb528fb7bb4d28a150874ec799David Höppner * Fill the signal queue to the maximum.
5e989a96186a37eb528fb7bb4d28a150874ec799David Höppner for (i = 0; i < sigqueue_max; i++) {
5e989a96186a37eb528fb7bb4d28a150874ec799David Höppner error = sigqueue(pid, SIGQUEUE_SIGNAL, value);
5e989a96186a37eb528fb7bb4d28a150874ec799David Höppner * Send a further signal and test if we get the expected
5e989a96186a37eb528fb7bb4d28a150874ec799David Höppner error = sigqueue(pid, SIGQUEUE_SIGNAL, value);
5e989a96186a37eb528fb7bb4d28a150874ec799David Höppner * Unblock the signals and check if we received all messages
5e989a96186a37eb528fb7bb4d28a150874ec799David Höppner * from the signal queue.
5e989a96186a37eb528fb7bb4d28a150874ec799David Höppner test_failed(test_name, "nreceived != sigqueue_max\n");
5e989a96186a37eb528fb7bb4d28a150874ec799David Höppner/* ARGSUSED */