NetBSD-5.0.2/regress/lib/libpthread/sigsuspend/sigsuspend.c

Compare this file to the similar file:
Show the results in this format:

/*	$NetBSD: sigsuspend.c,v 1.2 2003/07/26 19:38:48 salo Exp $	*/

/*
 * Regression test for sigsuspend in libpthread when pthread lib isn't
 * initialized.
 *
 * Written by Love Hörnquist Åstrand <lha@NetBSD.org>, March 2003.
 * Public domain.
 */

#include <assert.h>
#include <err.h>
#include <stdio.h>
#include <signal.h>
#include <unistd.h>

static void alarm_handler(int);

int alarm_set;

static void
alarm_handler(int signo)
{
	alarm_set = 1;
}

int
main(int argc, char **argv)
{
	struct sigaction sa;
	sigset_t set;

	sa.sa_flags = 0;
	sa.sa_handler = alarm_handler;
	sigemptyset(&sa.sa_mask);

	sigaction(SIGALRM, &sa, NULL);

	alarm(1);

	sigemptyset(&set);
	sigaddset(&set, SIGUSR1);
	
	sigsuspend(&set);

	alarm(0);

	if (!alarm_set)
		errx(1, "alarm_set not set");

	return 0;
}