timer_delete02.c revision fed9641096e27f79a0f2d9adfe9839dd8d11dc0f
1d13d74bbf207c2d01598c6fef092a75b93b07c71vapier/*
2d13d74bbf207c2d01598c6fef092a75b93b07c71vapier * Copyright (c) Wipro Technologies Ltd, 2003.  All Rights Reserved.
3d13d74bbf207c2d01598c6fef092a75b93b07c71vapier *
4d13d74bbf207c2d01598c6fef092a75b93b07c71vapier * This program is free software; you can redistribute it and/or modify it
5d13d74bbf207c2d01598c6fef092a75b93b07c71vapier * under the terms of version 2 of the GNU General Public License as
6d13d74bbf207c2d01598c6fef092a75b93b07c71vapier * published by the Free Software Foundation.
7d13d74bbf207c2d01598c6fef092a75b93b07c71vapier *
8d13d74bbf207c2d01598c6fef092a75b93b07c71vapier * This program is distributed in the hope that it would be useful, but
9d13d74bbf207c2d01598c6fef092a75b93b07c71vapier * WITHOUT ANY WARRANTY; without even the implied warranty of
10d13d74bbf207c2d01598c6fef092a75b93b07c71vapier * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
11d13d74bbf207c2d01598c6fef092a75b93b07c71vapier *
12d13d74bbf207c2d01598c6fef092a75b93b07c71vapier * You should have received a copy of the GNU General Public License along
13fed9641096e27f79a0f2d9adfe9839dd8d11dc0fWanlong Gao * with this program; if not, write the Free Software Foundation, Inc.,
14fed9641096e27f79a0f2d9adfe9839dd8d11dc0fWanlong Gao * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
15d13d74bbf207c2d01598c6fef092a75b93b07c71vapier *
16d13d74bbf207c2d01598c6fef092a75b93b07c71vapier */
17d13d74bbf207c2d01598c6fef092a75b93b07c71vapier/**************************************************************************
186670f8476bb253032aba3ff4b8b0c41cf7e90156vapier *
196670f8476bb253032aba3ff4b8b0c41cf7e90156vapier *    TEST IDENTIFIER	: timer_delete02
206670f8476bb253032aba3ff4b8b0c41cf7e90156vapier *
21d13d74bbf207c2d01598c6fef092a75b93b07c71vapier *    EXECUTED BY	: anyone
226670f8476bb253032aba3ff4b8b0c41cf7e90156vapier *
23d13d74bbf207c2d01598c6fef092a75b93b07c71vapier *    TEST TITLE	: Basic test for timer_delete(2)
246670f8476bb253032aba3ff4b8b0c41cf7e90156vapier *
25d13d74bbf207c2d01598c6fef092a75b93b07c71vapier *    TEST CASE TOTAL	: 1
266670f8476bb253032aba3ff4b8b0c41cf7e90156vapier *
27d13d74bbf207c2d01598c6fef092a75b93b07c71vapier *    AUTHOR		: Aniruddha Marathe <aniruddha.marathe@wipro.com>
286670f8476bb253032aba3ff4b8b0c41cf7e90156vapier *
29d13d74bbf207c2d01598c6fef092a75b93b07c71vapier *    SIGNALS
30d13d74bbf207c2d01598c6fef092a75b93b07c71vapier * 	Uses SIGUSR1 to pause before test if option set.
31d13d74bbf207c2d01598c6fef092a75b93b07c71vapier * 	(See the parse_opts(3) man page).
32d13d74bbf207c2d01598c6fef092a75b93b07c71vapier *
33d13d74bbf207c2d01598c6fef092a75b93b07c71vapier *    DESCRIPTION
34d13d74bbf207c2d01598c6fef092a75b93b07c71vapier *     This is a Phase I test for the timer_delete(2) system call.
35d13d74bbf207c2d01598c6fef092a75b93b07c71vapier *     It is intended to provide a limited exposure of the system call.
366670f8476bb253032aba3ff4b8b0c41cf7e90156vapier *
37d13d74bbf207c2d01598c6fef092a75b93b07c71vapier * 	Setup:
38d13d74bbf207c2d01598c6fef092a75b93b07c71vapier *	  Setup signal handling.
39d13d74bbf207c2d01598c6fef092a75b93b07c71vapier *	  Pause for SIGUSR1 if option specified.
406670f8476bb253032aba3ff4b8b0c41cf7e90156vapier *
41d13d74bbf207c2d01598c6fef092a75b93b07c71vapier * 	Test:
42d13d74bbf207c2d01598c6fef092a75b93b07c71vapier *	 Loop if the proper options are given.
43d13d74bbf207c2d01598c6fef092a75b93b07c71vapier *	 Create a POSIX timer
446670f8476bb253032aba3ff4b8b0c41cf7e90156vapier *	 Execute system call
45d13d74bbf207c2d01598c6fef092a75b93b07c71vapier *	 Check return code, if system call failed (return=-1)
46d13d74bbf207c2d01598c6fef092a75b93b07c71vapier *		Log the errno and Issue a FAIL message.
47d13d74bbf207c2d01598c6fef092a75b93b07c71vapier *	 Otherwise, Issue a PASS message.
486670f8476bb253032aba3ff4b8b0c41cf7e90156vapier *
49d13d74bbf207c2d01598c6fef092a75b93b07c71vapier * 	Cleanup:
50d13d74bbf207c2d01598c6fef092a75b93b07c71vapier * 	  Print errno log and/or timing stats if options given
516670f8476bb253032aba3ff4b8b0c41cf7e90156vapier *
52d13d74bbf207c2d01598c6fef092a75b93b07c71vapier * USAGE:  <for command-line>
53d13d74bbf207c2d01598c6fef092a75b93b07c71vapier * timer_delete02 [-c n] [-e] [-i n] [-I x] [-P x] [-t] [-p]
54d13d74bbf207c2d01598c6fef092a75b93b07c71vapier * where:
556670f8476bb253032aba3ff4b8b0c41cf7e90156vapier * 	-c n : Run n copies simultaneously.
56d13d74bbf207c2d01598c6fef092a75b93b07c71vapier *	-e   : Turn on errno logging.
57d13d74bbf207c2d01598c6fef092a75b93b07c71vapier *	-i n : Execute test n times.
58d13d74bbf207c2d01598c6fef092a75b93b07c71vapier *	-I x : Execute test for x seconds.
59d13d74bbf207c2d01598c6fef092a75b93b07c71vapier *	-p   : Pause for SIGUSR1 before starting
60d13d74bbf207c2d01598c6fef092a75b93b07c71vapier *	-P x : Pause for x seconds between iterations.
61d13d74bbf207c2d01598c6fef092a75b93b07c71vapier *	-t   : Turn on syscall timing.
62d13d74bbf207c2d01598c6fef092a75b93b07c71vapier *
63d13d74bbf207c2d01598c6fef092a75b93b07c71vapier *RESTRICTIONS:
64d13d74bbf207c2d01598c6fef092a75b93b07c71vapier * None
65d13d74bbf207c2d01598c6fef092a75b93b07c71vapier *****************************************************************************/
66d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
67bc8a4616c83630c69ec3ca2bd6e4eb7acc456eeevapier#include <stdlib.h>
68d13d74bbf207c2d01598c6fef092a75b93b07c71vapier#include <errno.h>
69d13d74bbf207c2d01598c6fef092a75b93b07c71vapier#include <time.h>
70d13d74bbf207c2d01598c6fef092a75b93b07c71vapier#include <signal.h>
71d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
72bc8a4616c83630c69ec3ca2bd6e4eb7acc456eeevapier#include "test.h"
73bc8a4616c83630c69ec3ca2bd6e4eb7acc456eeevapier#include "usctest.h"
74bc8a4616c83630c69ec3ca2bd6e4eb7acc456eeevapier#include "common_timers.h"
75d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
76a9670cd56bfee821a9b2d34b5c5d1710d7f03777Garrett Coopervoid setup(void);
77d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
78d13d74bbf207c2d01598c6fef092a75b93b07c71vapierchar *TCID = "timer_delete02";	/* Test program identifier.    */
79d13d74bbf207c2d01598c6fef092a75b93b07c71vapierint TST_TOTAL = 1;		/* Total number of test cases. */
80d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
81d13d74bbf207c2d01598c6fef092a75b93b07c71vapierint
82d13d74bbf207c2d01598c6fef092a75b93b07c71vapiermain(int ac, char **av)
83d13d74bbf207c2d01598c6fef092a75b93b07c71vapier{
84d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	int lc;		/* loop counter */
85d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	char *msg;	/* message returned from parse_opts */
864e94765d753c0ea91b4745ffac30df427a4d9202Subrata Modak	kernel_timer_t timer_id;
87d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
88d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	/* parse standard options */
896670f8476bb253032aba3ff4b8b0c41cf7e90156vapier	if ((msg = parse_opts (ac, av, (option_t *) NULL, NULL)) !=
90d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			(char *) NULL) {
9153740500924f6439623a8ac256b5be2d6c59ed1fGarrett Cooper		tst_brkm(TBROK, NULL, "OPTION PARSING ERROR - %s", msg);
92d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	}
93d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
94d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	setup();
95d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
96d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	for (lc = 0; TEST_LOOPING(lc); lc++) {
97d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
98d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		Tst_count = 0;
99d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
100d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		/* Create a Posix timer */
1011a7f54261e0ab0d8318f1833987f1a7178b546e6yaberauneya		if (syscall(__NR_timer_create, CLOCK_REALTIME, NULL, &timer_id) < 0) {
102d13d74bbf207c2d01598c6fef092a75b93b07c71vapier			Tst_count = TST_TOTAL;
1031a7f54261e0ab0d8318f1833987f1a7178b546e6yaberauneya			tst_brkm(TBROK | TERRNO, cleanup,
1041a7f54261e0ab0d8318f1833987f1a7178b546e6yaberauneya				"timer_delete can't be tested because "
1051a7f54261e0ab0d8318f1833987f1a7178b546e6yaberauneya				"timer_create failed");
106d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		}
1071a7f54261e0ab0d8318f1833987f1a7178b546e6yaberauneya		TEST(syscall(__NR_timer_delete, timer_id));
1081a7f54261e0ab0d8318f1833987f1a7178b546e6yaberauneya		tst_resm((TEST_RETURN == 0 ? TPASS : TFAIL | TTERRNO),
1091a7f54261e0ab0d8318f1833987f1a7178b546e6yaberauneya			"%s",
1101a7f54261e0ab0d8318f1833987f1a7178b546e6yaberauneya			(TEST_RETURN == 0 ? "passed" : "failed"));
1112c28215423293e443469a07ae7011135d058b671Garrett Cooper	}
112d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
113d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	cleanup();
1141a7f54261e0ab0d8318f1833987f1a7178b546e6yaberauneya	tst_exit();
115d13d74bbf207c2d01598c6fef092a75b93b07c71vapier}
116d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
117d13d74bbf207c2d01598c6fef092a75b93b07c71vapier/* setup() - performs all ONE TIME setup for this test */
118a9670cd56bfee821a9b2d34b5c5d1710d7f03777Garrett Coopervoid
119a9670cd56bfee821a9b2d34b5c5d1710d7f03777Garrett Coopersetup(void)
120d13d74bbf207c2d01598c6fef092a75b93b07c71vapier{
1212c28215423293e443469a07ae7011135d058b671Garrett Cooper
122d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	tst_sig(NOFORK, DEF_HANDLER, cleanup);
123d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
124d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	TEST_PAUSE;
125a9670cd56bfee821a9b2d34b5c5d1710d7f03777Garrett Cooper}
126d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
127d13d74bbf207c2d01598c6fef092a75b93b07c71vapier/*
128d13d74bbf207c2d01598c6fef092a75b93b07c71vapier * cleanup() - Performs one time cleanup for this test at
129d13d74bbf207c2d01598c6fef092a75b93b07c71vapier * completion or premature exit
130d13d74bbf207c2d01598c6fef092a75b93b07c71vapier */
131a9670cd56bfee821a9b2d34b5c5d1710d7f03777Garrett Coopervoid
1321a7f54261e0ab0d8318f1833987f1a7178b546e6yaberauneyacleanup(void)
133d13d74bbf207c2d01598c6fef092a75b93b07c71vapier{
134d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	/*
135d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	* print timing stats if that option was specified.
136d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	* print errno log if that option was specified.
137d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	*/
138d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	TEST_CLEANUP;
139ec6edca7aa42b6affd989ef91b5897f96795e40fChris Dearman}
140