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