19512fe85Sahl /* 29512fe85Sahl * CDDL HEADER START 39512fe85Sahl * 49512fe85Sahl * The contents of this file are subject to the terms of the 59512fe85Sahl * Common Development and Distribution License (the "License"). 69512fe85Sahl * You may not use this file except in compliance with the License. 79512fe85Sahl * 89512fe85Sahl * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 99512fe85Sahl * or http://www.opensolaris.org/os/licensing. 109512fe85Sahl * See the License for the specific language governing permissions 119512fe85Sahl * and limitations under the License. 129512fe85Sahl * 139512fe85Sahl * When distributing Covered Code, include this CDDL HEADER in each 149512fe85Sahl * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 159512fe85Sahl * If applicable, add the following below this CDDL HEADER, with the 169512fe85Sahl * fields enclosed by brackets "[]" replaced with your own identifying 179512fe85Sahl * information: Portions Copyright [yyyy] [name of copyright owner] 189512fe85Sahl * 199512fe85Sahl * CDDL HEADER END 209512fe85Sahl */ 219512fe85Sahl 229512fe85Sahl /* 23*73427c57Sahl * Copyright 2007 Sun Microsystems, Inc. All rights reserved. 249512fe85Sahl * Use is subject to license terms. 259512fe85Sahl */ 269512fe85Sahl 279512fe85Sahl #pragma ident "%Z%%M% %I% %E% SMI" 289512fe85Sahl 299512fe85Sahl #include <signal.h> 309512fe85Sahl #include <time.h> 319512fe85Sahl #include <stdlib.h> 329512fe85Sahl #include <stdio.h> 339512fe85Sahl #include <errno.h> 349512fe85Sahl #include <string.h> 359512fe85Sahl 36*73427c57Sahl int 379512fe85Sahl main(int argc, char **argv) 389512fe85Sahl { 399512fe85Sahl struct sigevent ev; 409512fe85Sahl struct itimerspec ts; 419512fe85Sahl sigset_t set; 429512fe85Sahl timer_t tid; 439512fe85Sahl char *cmd = argv[0]; 449512fe85Sahl 459512fe85Sahl ev.sigev_notify = SIGEV_SIGNAL; 469512fe85Sahl ev.sigev_signo = SIGUSR1; 479512fe85Sahl 489512fe85Sahl if (timer_create(CLOCK_REALTIME, &ev, &tid) == -1) { 499512fe85Sahl (void) fprintf(stderr, "%s: cannot create CLOCK_HIGHRES " 509512fe85Sahl "timer: %s\n", cmd, strerror(errno)); 519512fe85Sahl exit(EXIT_FAILURE); 529512fe85Sahl } 539512fe85Sahl 549512fe85Sahl (void) sigemptyset(&set); 559512fe85Sahl (void) sigaddset(&set, SIGUSR1); 569512fe85Sahl (void) sigprocmask(SIG_BLOCK, &set, NULL); 579512fe85Sahl 589512fe85Sahl ts.it_value.tv_sec = 1; 599512fe85Sahl ts.it_value.tv_nsec = 0; 609512fe85Sahl ts.it_interval.tv_sec = 0; 619512fe85Sahl ts.it_interval.tv_nsec = NANOSEC / 2; 629512fe85Sahl 639512fe85Sahl if (timer_settime(tid, TIMER_RELTIME, &ts, NULL) == -1) { 649512fe85Sahl (void) fprintf(stderr, "%s: timer_settime() failed: %s\n", 659512fe85Sahl cmd, strerror(errno)); 669512fe85Sahl exit(EXIT_FAILURE); 679512fe85Sahl } 689512fe85Sahl 699512fe85Sahl for (;;) { 709512fe85Sahl (void) sigwait(&set); 719512fe85Sahl } 72*73427c57Sahl 73*73427c57Sahl /*NOTREACHED*/ 74*73427c57Sahl return (0); 759512fe85Sahl } 76