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