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 "common_timers.h"
74d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
75a9670cd56bfee821a9b2d34b5c5d1710d7f03777Garrett Coopervoid setup(void);
76d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
77d13d74bbf207c2d01598c6fef092a75b93b07c71vapierchar *TCID = "timer_delete02";	/* Test program identifier.    */
78d13d74bbf207c2d01598c6fef092a75b93b07c71vapierint TST_TOTAL = 1;		/* Total number of test cases. */
79d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
80354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gaoint main(int ac, char **av)
81d13d74bbf207c2d01598c6fef092a75b93b07c71vapier{
8289af32a63ce8a780ea39337339e14caae244b5a4Cyril Hrubis	int lc;
834e94765d753c0ea91b4745ffac30df427a4d9202Subrata Modak	kernel_timer_t timer_id;
84d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
85d6d11d08678aac1ed2c370ea8e42e5f45aea07beCyril Hrubis	tst_parse_opts(ac, av, NULL, NULL);
86d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
87d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	setup();
88d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
89d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	for (lc = 0; TEST_LOOPING(lc); lc++) {
90d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
91d59a659cd639ca2780b00049d102acd2a783d585Caspar Zhang		tst_count = 0;
92d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
93d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		/* Create a Posix timer */
94359980f68b19c77c698b121b57a071dfe6e3ca31Jan Stancek		if (ltp_syscall(__NR_timer_create, CLOCK_REALTIME, NULL,
95359980f68b19c77c698b121b57a071dfe6e3ca31Jan Stancek			&timer_id) < 0) {
96d59a659cd639ca2780b00049d102acd2a783d585Caspar Zhang			tst_count = TST_TOTAL;
971a7f54261e0ab0d8318f1833987f1a7178b546e6yaberauneya			tst_brkm(TBROK | TERRNO, cleanup,
98354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				 "timer_delete can't be tested because "
99354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				 "timer_create failed");
100d13d74bbf207c2d01598c6fef092a75b93b07c71vapier		}
101359980f68b19c77c698b121b57a071dfe6e3ca31Jan Stancek		TEST(ltp_syscall(__NR_timer_delete, timer_id));
1021a7f54261e0ab0d8318f1833987f1a7178b546e6yaberauneya		tst_resm((TEST_RETURN == 0 ? TPASS : TFAIL | TTERRNO),
103354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			 "%s", (TEST_RETURN == 0 ? "passed" : "failed"));
1042c28215423293e443469a07ae7011135d058b671Garrett Cooper	}
105d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
106d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	cleanup();
1071a7f54261e0ab0d8318f1833987f1a7178b546e6yaberauneya	tst_exit();
108d13d74bbf207c2d01598c6fef092a75b93b07c71vapier}
109d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
110d13d74bbf207c2d01598c6fef092a75b93b07c71vapier/* setup() - performs all ONE TIME setup for this test */
111354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gaovoid setup(void)
112d13d74bbf207c2d01598c6fef092a75b93b07c71vapier{
1132c28215423293e443469a07ae7011135d058b671Garrett Cooper
114d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	tst_sig(NOFORK, DEF_HANDLER, cleanup);
115d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
116d13d74bbf207c2d01598c6fef092a75b93b07c71vapier	TEST_PAUSE;
117a9670cd56bfee821a9b2d34b5c5d1710d7f03777Garrett Cooper}
118d13d74bbf207c2d01598c6fef092a75b93b07c71vapier
119d13d74bbf207c2d01598c6fef092a75b93b07c71vapier/*
120d13d74bbf207c2d01598c6fef092a75b93b07c71vapier * cleanup() - Performs one time cleanup for this test at
121d13d74bbf207c2d01598c6fef092a75b93b07c71vapier * completion or premature exit
122d13d74bbf207c2d01598c6fef092a75b93b07c71vapier */
123354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gaovoid cleanup(void)
124d13d74bbf207c2d01598c6fef092a75b93b07c71vapier{
125ec6edca7aa42b6affd989ef91b5897f96795e40fChris Dearman}
126