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}