1/* 2 * Copyright (c) 2002, Intel Corporation. All rights reserved. 3 * Created by: julie.n.fleischer REMOVE-THIS AT intel DOT com 4 * This file is licensed under the GPL license. For the full content 5 * of this license, see the COPYING file at the top level of this 6 * source tree. 7 8 * Test that a timer is in the disarmed state when it is first created. 9 * 10 * Test by creating a timer, sleeping for SLEEPTIME, and ensuring 11 * the sleep was not interrupted. 12 * 13 * For this test, CLOCK_REALTIME will be used. Signal SIGTOTEST will be 14 * used. 15 */ 16 17#include <time.h> 18#include <signal.h> 19#include <stdio.h> 20#include <unistd.h> 21#include <stdlib.h> 22#include "posixtest.h" 23 24#define SIGTOTEST SIGALRM 25#define SLEEPTIME 3 26 27void handler(int signo) 28{ 29 printf("Caught signal\n"); 30} 31 32int main(int argc, char *argv[]) 33{ 34 struct sigevent ev; 35 struct sigaction act; 36 timer_t tid; 37 struct timespec ts; 38 39 act.sa_handler=handler; 40 act.sa_flags=0; 41 sigemptyset(&act.sa_mask); 42 if (sigaction(SIGTOTEST, &act, 0) == -1) { 43 perror("Error calling sigaction\n"); 44 return PTS_UNRESOLVED; 45 } 46 47 ev.sigev_notify = SIGEV_SIGNAL; 48 ev.sigev_signo = SIGTOTEST; 49 if (timer_create(CLOCK_REALTIME, &ev, &tid) != 0) { 50 perror("timer_create() did not return success\n"); 51 return PTS_FAIL; 52 } 53 54 ts.tv_sec=SLEEPTIME; 55 ts.tv_nsec=0; 56 if (nanosleep(&ts, NULL) == -1) { 57 perror("nanosleep() interrupted\n"); 58 return PTS_FAIL; 59 } 60 61 //Sleep not interrupted 62 printf("Test PASSED\n"); 63 return PTS_PASS; 64} 65