pause01.c revision 2c28215423293e443469a07ae7011135d058b671
1865695bbc89088b9526ea9045410e5afb70a985cplars/* 2865695bbc89088b9526ea9045410e5afb70a985cplars * Copyright (c) 2000 Silicon Graphics, Inc. All Rights Reserved. 3865695bbc89088b9526ea9045410e5afb70a985cplars * 4865695bbc89088b9526ea9045410e5afb70a985cplars * This program is free software; you can redistribute it and/or modify it 5865695bbc89088b9526ea9045410e5afb70a985cplars * under the terms of version 2 of the GNU General Public License as 6865695bbc89088b9526ea9045410e5afb70a985cplars * published by the Free Software Foundation. 7865695bbc89088b9526ea9045410e5afb70a985cplars * 8865695bbc89088b9526ea9045410e5afb70a985cplars * This program is distributed in the hope that it would be useful, but 9865695bbc89088b9526ea9045410e5afb70a985cplars * WITHOUT ANY WARRANTY; without even the implied warranty of 10865695bbc89088b9526ea9045410e5afb70a985cplars * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 11865695bbc89088b9526ea9045410e5afb70a985cplars * 12865695bbc89088b9526ea9045410e5afb70a985cplars * Further, this software is distributed without any warranty that it is 13865695bbc89088b9526ea9045410e5afb70a985cplars * free of the rightful claim of any third person regarding infringement 14865695bbc89088b9526ea9045410e5afb70a985cplars * or the like. Any license provided herein, whether implied or 15865695bbc89088b9526ea9045410e5afb70a985cplars * otherwise, applies only to this software file. Patent licenses, if 16865695bbc89088b9526ea9045410e5afb70a985cplars * any, provided herein do not apply to combinations of this program with 17865695bbc89088b9526ea9045410e5afb70a985cplars * other software, or any other product whatsoever. 18865695bbc89088b9526ea9045410e5afb70a985cplars * 19865695bbc89088b9526ea9045410e5afb70a985cplars * You should have received a copy of the GNU General Public License along 20865695bbc89088b9526ea9045410e5afb70a985cplars * with this program; if not, write the Free Software Foundation, Inc., 59 21865695bbc89088b9526ea9045410e5afb70a985cplars * Temple Place - Suite 330, Boston MA 02111-1307, USA. 22865695bbc89088b9526ea9045410e5afb70a985cplars * 23865695bbc89088b9526ea9045410e5afb70a985cplars * Contact information: Silicon Graphics, Inc., 1600 Amphitheatre Pkwy, 24865695bbc89088b9526ea9045410e5afb70a985cplars * Mountain View, CA 94043, or: 25865695bbc89088b9526ea9045410e5afb70a985cplars * 26865695bbc89088b9526ea9045410e5afb70a985cplars * http://www.sgi.com 27865695bbc89088b9526ea9045410e5afb70a985cplars * 28865695bbc89088b9526ea9045410e5afb70a985cplars * For further information regarding this notice, see: 29865695bbc89088b9526ea9045410e5afb70a985cplars * 30865695bbc89088b9526ea9045410e5afb70a985cplars * http://oss.sgi.com/projects/GenInfo/NoticeExplan/ 31865695bbc89088b9526ea9045410e5afb70a985cplars * 32865695bbc89088b9526ea9045410e5afb70a985cplars */ 33356d38a9e5165ad60fda665847b76a08aa8bc69fvapier/* $Id: pause01.c,v 1.6 2009/08/28 13:36:21 vapier Exp $ */ 34865695bbc89088b9526ea9045410e5afb70a985cplars/********************************************************** 354bb656a129f7507823e9e6d6b98b1a02fd80ef89subrata_modak * 36865695bbc89088b9526ea9045410e5afb70a985cplars * OS Test - Silicon Graphics, Inc. 374bb656a129f7507823e9e6d6b98b1a02fd80ef89subrata_modak * 38865695bbc89088b9526ea9045410e5afb70a985cplars * TEST IDENTIFIER : pause01 394bb656a129f7507823e9e6d6b98b1a02fd80ef89subrata_modak * 40865695bbc89088b9526ea9045410e5afb70a985cplars * EXECUTED BY : anyone 414bb656a129f7507823e9e6d6b98b1a02fd80ef89subrata_modak * 42865695bbc89088b9526ea9045410e5afb70a985cplars * TEST TITLE : Basic test for pause(2) 434bb656a129f7507823e9e6d6b98b1a02fd80ef89subrata_modak * 44865695bbc89088b9526ea9045410e5afb70a985cplars * PARENT DOCUMENT : xxxtds01 454bb656a129f7507823e9e6d6b98b1a02fd80ef89subrata_modak * 46865695bbc89088b9526ea9045410e5afb70a985cplars * TEST CASE TOTAL : 1 474bb656a129f7507823e9e6d6b98b1a02fd80ef89subrata_modak * 48865695bbc89088b9526ea9045410e5afb70a985cplars * WALL CLOCK TIME : 2 494bb656a129f7507823e9e6d6b98b1a02fd80ef89subrata_modak * 50865695bbc89088b9526ea9045410e5afb70a985cplars * CPU TYPES : ALL 514bb656a129f7507823e9e6d6b98b1a02fd80ef89subrata_modak * 52865695bbc89088b9526ea9045410e5afb70a985cplars * AUTHOR : William Roske 534bb656a129f7507823e9e6d6b98b1a02fd80ef89subrata_modak * 54865695bbc89088b9526ea9045410e5afb70a985cplars * CO-PILOT : Dave Fenner 554bb656a129f7507823e9e6d6b98b1a02fd80ef89subrata_modak * 56865695bbc89088b9526ea9045410e5afb70a985cplars * DATE STARTED : 03/30/92 574bb656a129f7507823e9e6d6b98b1a02fd80ef89subrata_modak * 58865695bbc89088b9526ea9045410e5afb70a985cplars * INITIAL RELEASE : UNICOS 7.0 594bb656a129f7507823e9e6d6b98b1a02fd80ef89subrata_modak * 60865695bbc89088b9526ea9045410e5afb70a985cplars * TEST CASES 614bb656a129f7507823e9e6d6b98b1a02fd80ef89subrata_modak * 6256207cec7732e09c216c751c0b5f88a242bacae6subrata_modak * 1.) pause(2) returns...(See Description) 63bdbaec51a423e715c2b03ed9e497e9a1fba6103esubrata_modak * 64865695bbc89088b9526ea9045410e5afb70a985cplars * INPUT SPECIFICATIONS 6556207cec7732e09c216c751c0b5f88a242bacae6subrata_modak * The standard options for system call tests are accepted. 66865695bbc89088b9526ea9045410e5afb70a985cplars * (See the parse_opts(3) man page). 674bb656a129f7507823e9e6d6b98b1a02fd80ef89subrata_modak * 68865695bbc89088b9526ea9045410e5afb70a985cplars * OUTPUT SPECIFICATIONS 6956207cec7732e09c216c751c0b5f88a242bacae6subrata_modak * 70865695bbc89088b9526ea9045410e5afb70a985cplars * DURATION 7156207cec7732e09c216c751c0b5f88a242bacae6subrata_modak * Terminates - with frequency and infinite modes. 724bb656a129f7507823e9e6d6b98b1a02fd80ef89subrata_modak * 73865695bbc89088b9526ea9045410e5afb70a985cplars * SIGNALS 7456207cec7732e09c216c751c0b5f88a242bacae6subrata_modak * Uses SIGUSR1 to pause before test if option set. 7556207cec7732e09c216c751c0b5f88a242bacae6subrata_modak * (See the parse_opts(3) man page). 76865695bbc89088b9526ea9045410e5afb70a985cplars * 77865695bbc89088b9526ea9045410e5afb70a985cplars * RESOURCES 7856207cec7732e09c216c751c0b5f88a242bacae6subrata_modak * None 794bb656a129f7507823e9e6d6b98b1a02fd80ef89subrata_modak * 80865695bbc89088b9526ea9045410e5afb70a985cplars * ENVIRONMENTAL NEEDS 81865695bbc89088b9526ea9045410e5afb70a985cplars * No run-time environmental needs. 824bb656a129f7507823e9e6d6b98b1a02fd80ef89subrata_modak * 83865695bbc89088b9526ea9045410e5afb70a985cplars * SPECIAL PROCEDURAL REQUIREMENTS 8456207cec7732e09c216c751c0b5f88a242bacae6subrata_modak * None 854bb656a129f7507823e9e6d6b98b1a02fd80ef89subrata_modak * 86865695bbc89088b9526ea9045410e5afb70a985cplars * INTERCASE DEPENDENCIES 8756207cec7732e09c216c751c0b5f88a242bacae6subrata_modak * None 884bb656a129f7507823e9e6d6b98b1a02fd80ef89subrata_modak * 89865695bbc89088b9526ea9045410e5afb70a985cplars * DETAILED DESCRIPTION 90865695bbc89088b9526ea9045410e5afb70a985cplars * This is a Phase I test for the pause(2) system call. It is intended 91865695bbc89088b9526ea9045410e5afb70a985cplars * to provide a limited exposure of the system call, for now. It 92865695bbc89088b9526ea9045410e5afb70a985cplars * should/will be extended when full functional tests are written for 93865695bbc89088b9526ea9045410e5afb70a985cplars * pause(2). 944bb656a129f7507823e9e6d6b98b1a02fd80ef89subrata_modak * 9556207cec7732e09c216c751c0b5f88a242bacae6subrata_modak * Setup: 9656207cec7732e09c216c751c0b5f88a242bacae6subrata_modak * Setup signal handling. 97865695bbc89088b9526ea9045410e5afb70a985cplars * Pause for SIGUSR1 if option specified. 984bb656a129f7507823e9e6d6b98b1a02fd80ef89subrata_modak * 9956207cec7732e09c216c751c0b5f88a242bacae6subrata_modak * Test: 100865695bbc89088b9526ea9045410e5afb70a985cplars * Loop if the proper options are given. 10156207cec7732e09c216c751c0b5f88a242bacae6subrata_modak * Execute system call 102865695bbc89088b9526ea9045410e5afb70a985cplars * Check return code, if system call failed (return=-1) 103865695bbc89088b9526ea9045410e5afb70a985cplars * Log the errno and Issue a FAIL message. 104865695bbc89088b9526ea9045410e5afb70a985cplars * Otherwise, Issue a PASS message. 1054bb656a129f7507823e9e6d6b98b1a02fd80ef89subrata_modak * 10656207cec7732e09c216c751c0b5f88a242bacae6subrata_modak * Cleanup: 10756207cec7732e09c216c751c0b5f88a242bacae6subrata_modak * Print errno log and/or timing stats if options given 1084bb656a129f7507823e9e6d6b98b1a02fd80ef89subrata_modak * 1094bb656a129f7507823e9e6d6b98b1a02fd80ef89subrata_modak * 110865695bbc89088b9526ea9045410e5afb70a985cplars *#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#**/ 111865695bbc89088b9526ea9045410e5afb70a985cplars 112865695bbc89088b9526ea9045410e5afb70a985cplars#include <errno.h> 113865695bbc89088b9526ea9045410e5afb70a985cplars#include <signal.h> 114865695bbc89088b9526ea9045410e5afb70a985cplars#include "test.h" 115865695bbc89088b9526ea9045410e5afb70a985cplars#include "usctest.h" 116865695bbc89088b9526ea9045410e5afb70a985cplars 117aa35472f8d18e308cbce3bf599c55de88cca94d5vapiervoid setup(); 118aa35472f8d18e308cbce3bf599c55de88cca94d5vapiervoid cleanup(); 119865695bbc89088b9526ea9045410e5afb70a985cplars 12056207cec7732e09c216c751c0b5f88a242bacae6subrata_modakchar *TCID = "pause01"; /* Test program identifier. */ 12156207cec7732e09c216c751c0b5f88a242bacae6subrata_modakint TST_TOTAL = 1; /* Total number of test cases. */ 122865695bbc89088b9526ea9045410e5afb70a985cplarsextern int Tst_count; /* Test Case counter for tst_* routines */ 123865695bbc89088b9526ea9045410e5afb70a985cplars 12456207cec7732e09c216c751c0b5f88a242bacae6subrata_modakint exp_enos[] = { EINTR, 0 }; 125865695bbc89088b9526ea9045410e5afb70a985cplarsvoid go(); 126865695bbc89088b9526ea9045410e5afb70a985cplars 12756207cec7732e09c216c751c0b5f88a242bacae6subrata_modakint main(int ac, char **av) 128865695bbc89088b9526ea9045410e5afb70a985cplars{ 12956207cec7732e09c216c751c0b5f88a242bacae6subrata_modak int lc; /* loop counter */ 13056207cec7732e09c216c751c0b5f88a242bacae6subrata_modak char *msg; /* message returned from parse_opts */ 13156207cec7732e09c216c751c0b5f88a242bacae6subrata_modak 132865695bbc89088b9526ea9045410e5afb70a985cplars /*************************************************************** 133865695bbc89088b9526ea9045410e5afb70a985cplars * parse standard options 134865695bbc89088b9526ea9045410e5afb70a985cplars ***************************************************************/ 13545e285d46ab47b0ff76c88acb5ba97b0bd5f753dGarrett Cooper if ((msg = parse_opts(ac, av, NULL, NULL)) != NULL) 13653740500924f6439623a8ac256b5be2d6c59ed1fGarrett Cooper<<<<<<< HEAD 13760fa8014af7534eaefa901200c8df4b74ce422e6Garrett Cooper tst_brkm(TBROK, NULL, "OPTION PARSING ERROR - %s", msg); 13853740500924f6439623a8ac256b5be2d6c59ed1fGarrett Cooper======= 13956207cec7732e09c216c751c0b5f88a242bacae6subrata_modak tst_brkm(TBROK, cleanup, "OPTION PARSING ERROR - %s", msg); 14053740500924f6439623a8ac256b5be2d6c59ed1fGarrett Cooper>>>>>>> master 141865695bbc89088b9526ea9045410e5afb70a985cplars 142865695bbc89088b9526ea9045410e5afb70a985cplars /*************************************************************** 143865695bbc89088b9526ea9045410e5afb70a985cplars * perform global setup for test 144865695bbc89088b9526ea9045410e5afb70a985cplars ***************************************************************/ 14556207cec7732e09c216c751c0b5f88a242bacae6subrata_modak setup(); 146865695bbc89088b9526ea9045410e5afb70a985cplars 14756207cec7732e09c216c751c0b5f88a242bacae6subrata_modak /* set the expected errnos... */ 14856207cec7732e09c216c751c0b5f88a242bacae6subrata_modak TEST_EXP_ENOS(exp_enos); 149865695bbc89088b9526ea9045410e5afb70a985cplars 150865695bbc89088b9526ea9045410e5afb70a985cplars /*************************************************************** 151865695bbc89088b9526ea9045410e5afb70a985cplars * check looping state if -c option given 152865695bbc89088b9526ea9045410e5afb70a985cplars ***************************************************************/ 15356207cec7732e09c216c751c0b5f88a242bacae6subrata_modak for (lc = 0; TEST_LOOPING(lc); lc++) { 15456207cec7732e09c216c751c0b5f88a242bacae6subrata_modak 15556207cec7732e09c216c751c0b5f88a242bacae6subrata_modak Tst_count = 0; 15656207cec7732e09c216c751c0b5f88a242bacae6subrata_modak 15756207cec7732e09c216c751c0b5f88a242bacae6subrata_modak (void)signal(SIGALRM, go); 15856207cec7732e09c216c751c0b5f88a242bacae6subrata_modak alarm(1); 15956207cec7732e09c216c751c0b5f88a242bacae6subrata_modak /* 16056207cec7732e09c216c751c0b5f88a242bacae6subrata_modak * Call pause(2) 16156207cec7732e09c216c751c0b5f88a242bacae6subrata_modak */ 16256207cec7732e09c216c751c0b5f88a242bacae6subrata_modak TEST(pause()); 16356207cec7732e09c216c751c0b5f88a242bacae6subrata_modak 16456207cec7732e09c216c751c0b5f88a242bacae6subrata_modak /* check return code. Pause returns -1 and EINTR errno */ 16556207cec7732e09c216c751c0b5f88a242bacae6subrata_modak if (TEST_RETURN != -1) { 16656207cec7732e09c216c751c0b5f88a242bacae6subrata_modak tst_resm(TFAIL, 16756207cec7732e09c216c751c0b5f88a242bacae6subrata_modak "pause() returned WITHOUT an error return code : %d", 16856207cec7732e09c216c751c0b5f88a242bacae6subrata_modak TEST_ERRNO); 16956207cec7732e09c216c751c0b5f88a242bacae6subrata_modak } else { 17056207cec7732e09c216c751c0b5f88a242bacae6subrata_modak /* log the errno */ 17156207cec7732e09c216c751c0b5f88a242bacae6subrata_modak TEST_ERROR_LOG(TEST_ERRNO); 172865695bbc89088b9526ea9045410e5afb70a985cplars /*************************************************************** 173865695bbc89088b9526ea9045410e5afb70a985cplars * only perform functional verification if flag set (-f not given) 174865695bbc89088b9526ea9045410e5afb70a985cplars ***************************************************************/ 17556207cec7732e09c216c751c0b5f88a242bacae6subrata_modak if (STD_FUNCTIONAL_TEST) { 17656207cec7732e09c216c751c0b5f88a242bacae6subrata_modak /* check the errno */ 17756207cec7732e09c216c751c0b5f88a242bacae6subrata_modak if (TEST_ERRNO == EINTR) 178356d38a9e5165ad60fda665847b76a08aa8bc69fvapier tst_resm(TPASS, "pause() returned %ld", 17956207cec7732e09c216c751c0b5f88a242bacae6subrata_modak TEST_RETURN); 18056207cec7732e09c216c751c0b5f88a242bacae6subrata_modak else 18156207cec7732e09c216c751c0b5f88a242bacae6subrata_modak tst_resm(TFAIL, 182356d38a9e5165ad60fda665847b76a08aa8bc69fvapier "pause() returned %ld. Expected %d (EINTR)", 18356207cec7732e09c216c751c0b5f88a242bacae6subrata_modak TEST_RETURN, EINTR); 18456207cec7732e09c216c751c0b5f88a242bacae6subrata_modak } 18556207cec7732e09c216c751c0b5f88a242bacae6subrata_modak } 1862c28215423293e443469a07ae7011135d058b671Garrett Cooper } 187865695bbc89088b9526ea9045410e5afb70a985cplars 188865695bbc89088b9526ea9045410e5afb70a985cplars /*************************************************************** 189865695bbc89088b9526ea9045410e5afb70a985cplars * cleanup and exit 190865695bbc89088b9526ea9045410e5afb70a985cplars ***************************************************************/ 19156207cec7732e09c216c751c0b5f88a242bacae6subrata_modak cleanup(); 192865695bbc89088b9526ea9045410e5afb70a985cplars 1932c28215423293e443469a07ae7011135d058b671Garrett Cooper} 194865695bbc89088b9526ea9045410e5afb70a985cplars 195865695bbc89088b9526ea9045410e5afb70a985cplars/*************************************************************** 196865695bbc89088b9526ea9045410e5afb70a985cplars * setup() - performs all ONE TIME setup for this test. 197865695bbc89088b9526ea9045410e5afb70a985cplars ***************************************************************/ 19856207cec7732e09c216c751c0b5f88a242bacae6subrata_modakvoid setup() 199865695bbc89088b9526ea9045410e5afb70a985cplars{ 2002c28215423293e443469a07ae7011135d058b671Garrett Cooper 20156207cec7732e09c216c751c0b5f88a242bacae6subrata_modak tst_sig(NOFORK, DEF_HANDLER, cleanup); 202865695bbc89088b9526ea9045410e5afb70a985cplars 20356207cec7732e09c216c751c0b5f88a242bacae6subrata_modak TEST_PAUSE; 2042c28215423293e443469a07ae7011135d058b671Garrett Cooper} 205865695bbc89088b9526ea9045410e5afb70a985cplars 206865695bbc89088b9526ea9045410e5afb70a985cplars/*************************************************************** 207865695bbc89088b9526ea9045410e5afb70a985cplars * cleanup() - performs all ONE TIME cleanup for this test at 208865695bbc89088b9526ea9045410e5afb70a985cplars * completion or premature exit. 209865695bbc89088b9526ea9045410e5afb70a985cplars ***************************************************************/ 21056207cec7732e09c216c751c0b5f88a242bacae6subrata_modakvoid cleanup() 211865695bbc89088b9526ea9045410e5afb70a985cplars{ 21256207cec7732e09c216c751c0b5f88a242bacae6subrata_modak /* 21356207cec7732e09c216c751c0b5f88a242bacae6subrata_modak * print timing stats if that option was specified. 21456207cec7732e09c216c751c0b5f88a242bacae6subrata_modak * print errno log if that option was specified. 21556207cec7732e09c216c751c0b5f88a242bacae6subrata_modak */ 21656207cec7732e09c216c751c0b5f88a242bacae6subrata_modak TEST_CLEANUP; 217865695bbc89088b9526ea9045410e5afb70a985cplars 2182c28215423293e443469a07ae7011135d058b671Garrett Cooper} 219865695bbc89088b9526ea9045410e5afb70a985cplars 220865695bbc89088b9526ea9045410e5afb70a985cplars/* routine to catch the alarm signal */ 22156207cec7732e09c216c751c0b5f88a242bacae6subrata_modakvoid go() 222865695bbc89088b9526ea9045410e5afb70a985cplars{ 2232c28215423293e443469a07ae7011135d058b671Garrett Cooper}