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 20fed9641096e27f79a0f2d9adfe9839dd8d11dc0fWanlong Gao * with this program; if not, write the Free Software Foundation, Inc., 21fed9641096e27f79a0f2d9adfe9839dd8d11dc0fWanlong Gao * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 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 */ 33da124b9ea3a63ac3e42a83362a63d77fb014f1a1subrata_modak/* $Id: close08.c,v 1.6 2009/10/13 14:00:46 subrata_modak Exp $ */ 34865695bbc89088b9526ea9045410e5afb70a985cplars/********************************************************** 354bb656a129f7507823e9e6d6b98b1a02fd80ef89subrata_modak * 36865695bbc89088b9526ea9045410e5afb70a985cplars * OS Test - Silicon Graphics, Inc. 374bb656a129f7507823e9e6d6b98b1a02fd80ef89subrata_modak * 38865695bbc89088b9526ea9045410e5afb70a985cplars * TEST IDENTIFIER : close08 394bb656a129f7507823e9e6d6b98b1a02fd80ef89subrata_modak * 40865695bbc89088b9526ea9045410e5afb70a985cplars * EXECUTED BY : anyone 414bb656a129f7507823e9e6d6b98b1a02fd80ef89subrata_modak * 42865695bbc89088b9526ea9045410e5afb70a985cplars * TEST TITLE : Basic test for close(2) 434bb656a129f7507823e9e6d6b98b1a02fd80ef89subrata_modak * 44865695bbc89088b9526ea9045410e5afb70a985cplars * PARENT DOCUMENT : usctpl01 454bb656a129f7507823e9e6d6b98b1a02fd80ef89subrata_modak * 46865695bbc89088b9526ea9045410e5afb70a985cplars * TEST CASE TOTAL : 1 474bb656a129f7507823e9e6d6b98b1a02fd80ef89subrata_modak * 48865695bbc89088b9526ea9045410e5afb70a985cplars * WALL CLOCK TIME : 1 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 * 62865695bbc89088b9526ea9045410e5afb70a985cplars * 1.) close(2) returns...(See Description) 63bdbaec51a423e715c2b03ed9e497e9a1fba6103esubrata_modak * 64865695bbc89088b9526ea9045410e5afb70a985cplars * INPUT SPECIFICATIONS 65865695bbc89088b9526ea9045410e5afb70a985cplars * 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 71865695bbc89088b9526ea9045410e5afb70a985cplars * Terminates - with frequency and infinite modes. 724bb656a129f7507823e9e6d6b98b1a02fd80ef89subrata_modak * 73865695bbc89088b9526ea9045410e5afb70a985cplars * SIGNALS 74865695bbc89088b9526ea9045410e5afb70a985cplars * Uses SIGUSR1 to pause before test if option set. 75865695bbc89088b9526ea9045410e5afb70a985cplars * (See the parse_opts(3) man page). 76865695bbc89088b9526ea9045410e5afb70a985cplars * 77865695bbc89088b9526ea9045410e5afb70a985cplars * RESOURCES 78865695bbc89088b9526ea9045410e5afb70a985cplars * None 794bb656a129f7507823e9e6d6b98b1a02fd80ef89subrata_modak * 80865695bbc89088b9526ea9045410e5afb70a985cplars * ENVIRONMENTAL NEEDS 81865695bbc89088b9526ea9045410e5afb70a985cplars * No run-time environmental needs. 824bb656a129f7507823e9e6d6b98b1a02fd80ef89subrata_modak * 83865695bbc89088b9526ea9045410e5afb70a985cplars * SPECIAL PROCEDURAL REQUIREMENTS 84865695bbc89088b9526ea9045410e5afb70a985cplars * None 854bb656a129f7507823e9e6d6b98b1a02fd80ef89subrata_modak * 86865695bbc89088b9526ea9045410e5afb70a985cplars * INTERCASE DEPENDENCIES 87865695bbc89088b9526ea9045410e5afb70a985cplars * None 884bb656a129f7507823e9e6d6b98b1a02fd80ef89subrata_modak * 89865695bbc89088b9526ea9045410e5afb70a985cplars * DETAILED DESCRIPTION 90865695bbc89088b9526ea9045410e5afb70a985cplars * This is a Phase I test for the close(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 * close(2). 944bb656a129f7507823e9e6d6b98b1a02fd80ef89subrata_modak * 95865695bbc89088b9526ea9045410e5afb70a985cplars * Setup: 96865695bbc89088b9526ea9045410e5afb70a985cplars * Setup signal handling. 97865695bbc89088b9526ea9045410e5afb70a985cplars * Pause for SIGUSR1 if option specified. 984bb656a129f7507823e9e6d6b98b1a02fd80ef89subrata_modak * 99865695bbc89088b9526ea9045410e5afb70a985cplars * Test: 100865695bbc89088b9526ea9045410e5afb70a985cplars * Loop if the proper options are given. 101865695bbc89088b9526ea9045410e5afb70a985cplars * 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 * 106865695bbc89088b9526ea9045410e5afb70a985cplars * Cleanup: 107865695bbc89088b9526ea9045410e5afb70a985cplars * Print errno log and/or timing stats if options given 1084bb656a129f7507823e9e6d6b98b1a02fd80ef89subrata_modak * 1094bb656a129f7507823e9e6d6b98b1a02fd80ef89subrata_modak * 110865695bbc89088b9526ea9045410e5afb70a985cplars *#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#**/ 111865695bbc89088b9526ea9045410e5afb70a985cplars 112865695bbc89088b9526ea9045410e5afb70a985cplars#include <sys/types.h> 113a7fa8561a5a095faf6e202a80b0c7729be8bb82dSteven Jackson#include <fcntl.h> 114865695bbc89088b9526ea9045410e5afb70a985cplars#include <errno.h> 115865695bbc89088b9526ea9045410e5afb70a985cplars#include <string.h> 116865695bbc89088b9526ea9045410e5afb70a985cplars#include <signal.h> 117865695bbc89088b9526ea9045410e5afb70a985cplars#include "test.h" 118865695bbc89088b9526ea9045410e5afb70a985cplars 119aa35472f8d18e308cbce3bf599c55de88cca94d5vapiervoid setup(); 120aa35472f8d18e308cbce3bf599c55de88cca94d5vapiervoid cleanup(); 121865695bbc89088b9526ea9045410e5afb70a985cplars 122fdce7d5e2a219d201a2b0e3bab6b61b01ec1d716Cyril Hrubischar *TCID = "close08"; 123fdce7d5e2a219d201a2b0e3bab6b61b01ec1d716Cyril Hrubisint TST_TOTAL = 1; 124865695bbc89088b9526ea9045410e5afb70a985cplars 125865695bbc89088b9526ea9045410e5afb70a985cplarschar fname[255]; 126865695bbc89088b9526ea9045410e5afb70a985cplarsint fd; 127865695bbc89088b9526ea9045410e5afb70a985cplars 12856207cec7732e09c216c751c0b5f88a242bacae6subrata_modakint main(int ac, char **av) 129865695bbc89088b9526ea9045410e5afb70a985cplars{ 1307b98b69bf0293b5b74e2e9361014fcc470310a07Garrett Cooper int lc; 13156207cec7732e09c216c751c0b5f88a242bacae6subrata_modak 132d6d11d08678aac1ed2c370ea8e42e5f45aea07beCyril Hrubis tst_parse_opts(ac, av, NULL, NULL); 133865695bbc89088b9526ea9045410e5afb70a985cplars 13456207cec7732e09c216c751c0b5f88a242bacae6subrata_modak setup(); 135865695bbc89088b9526ea9045410e5afb70a985cplars 13656207cec7732e09c216c751c0b5f88a242bacae6subrata_modak for (lc = 0; TEST_LOOPING(lc); lc++) { 13756207cec7732e09c216c751c0b5f88a242bacae6subrata_modak 138d59a659cd639ca2780b00049d102acd2a783d585Caspar Zhang tst_count = 0; 13956207cec7732e09c216c751c0b5f88a242bacae6subrata_modak 140354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao if ((fd = open(fname, O_RDWR | O_CREAT, 0700)) == -1) { 141354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao tst_brkm(TBROK | TTERRNO, cleanup, 142354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao "open(%s, O_RDWR|O_CREAT,0700) failed", fname); 14356207cec7732e09c216c751c0b5f88a242bacae6subrata_modak } 14456207cec7732e09c216c751c0b5f88a242bacae6subrata_modak TEST(close(fd)); 14556207cec7732e09c216c751c0b5f88a242bacae6subrata_modak 14656207cec7732e09c216c751c0b5f88a242bacae6subrata_modak if (TEST_RETURN == -1) { 147354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao tst_resm(TFAIL | TTERRNO, "close(%s) failed", fname); 14856207cec7732e09c216c751c0b5f88a242bacae6subrata_modak } else { 149e38b961c385192f0d804914b77bd590734b42e75Cyril Hrubis tst_resm(TPASS, "close(%s) returned %ld", fname, 150e38b961c385192f0d804914b77bd590734b42e75Cyril Hrubis TEST_RETURN); 15156207cec7732e09c216c751c0b5f88a242bacae6subrata_modak } 15256207cec7732e09c216c751c0b5f88a242bacae6subrata_modak 15356207cec7732e09c216c751c0b5f88a242bacae6subrata_modak if (unlink(fname) == -1) { 154354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao tst_brkm(TBROK | TERRNO, cleanup, 155354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao "unlink(%s) failed", fname); 15656207cec7732e09c216c751c0b5f88a242bacae6subrata_modak } 1572c28215423293e443469a07ae7011135d058b671Garrett Cooper } 158865695bbc89088b9526ea9045410e5afb70a985cplars 15956207cec7732e09c216c751c0b5f88a242bacae6subrata_modak cleanup(); 1607b98b69bf0293b5b74e2e9361014fcc470310a07Garrett Cooper tst_exit(); 1612c28215423293e443469a07ae7011135d058b671Garrett Cooper} 162865695bbc89088b9526ea9045410e5afb70a985cplars 163c57fba5535abf457e33dd7a986b6c512d95cdef6Mike Frysingervoid setup(void) 164865695bbc89088b9526ea9045410e5afb70a985cplars{ 1652c28215423293e443469a07ae7011135d058b671Garrett Cooper 16656207cec7732e09c216c751c0b5f88a242bacae6subrata_modak tst_sig(NOFORK, DEF_HANDLER, cleanup); 167865695bbc89088b9526ea9045410e5afb70a985cplars 16856207cec7732e09c216c751c0b5f88a242bacae6subrata_modak TEST_PAUSE; 169865695bbc89088b9526ea9045410e5afb70a985cplars 17056207cec7732e09c216c751c0b5f88a242bacae6subrata_modak tst_tmpdir(); 171865695bbc89088b9526ea9045410e5afb70a985cplars 17256207cec7732e09c216c751c0b5f88a242bacae6subrata_modak sprintf(fname, "tfile_%d", getpid()); 1732c28215423293e443469a07ae7011135d058b671Garrett Cooper} 174865695bbc89088b9526ea9045410e5afb70a985cplars 175c57fba5535abf457e33dd7a986b6c512d95cdef6Mike Frysingervoid cleanup(void) 176865695bbc89088b9526ea9045410e5afb70a985cplars{ 17756207cec7732e09c216c751c0b5f88a242bacae6subrata_modak tst_rmdir(); 178865695bbc89088b9526ea9045410e5afb70a985cplars 179ec6edca7aa42b6affd989ef91b5897f96795e40fChris Dearman} 180