16e05831f23c0bfbad280f36d90684210a86f3630subrata_modak/******************************************************************************/ 26e05831f23c0bfbad280f36d90684210a86f3630subrata_modak/* Copyright (c) Crackerjack Project., 2007 */ 36e05831f23c0bfbad280f36d90684210a86f3630subrata_modak/* */ 46e05831f23c0bfbad280f36d90684210a86f3630subrata_modak/* This program is free software; you can redistribute it and/or modify */ 56e05831f23c0bfbad280f36d90684210a86f3630subrata_modak/* it under the terms of the GNU General Public License as published by */ 66e05831f23c0bfbad280f36d90684210a86f3630subrata_modak/* the Free Software Foundation; either version 2 of the License, or */ 76e05831f23c0bfbad280f36d90684210a86f3630subrata_modak/* (at your option) any later version. */ 86e05831f23c0bfbad280f36d90684210a86f3630subrata_modak/* */ 96e05831f23c0bfbad280f36d90684210a86f3630subrata_modak/* This program is distributed in the hope that it will be useful, */ 106e05831f23c0bfbad280f36d90684210a86f3630subrata_modak/* but WITHOUT ANY WARRANTY; without even the implied warranty of */ 116e05831f23c0bfbad280f36d90684210a86f3630subrata_modak/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See */ 126e05831f23c0bfbad280f36d90684210a86f3630subrata_modak/* the GNU General Public License for more details. */ 136e05831f23c0bfbad280f36d90684210a86f3630subrata_modak/* */ 146e05831f23c0bfbad280f36d90684210a86f3630subrata_modak/* You should have received a copy of the GNU General Public License */ 156e05831f23c0bfbad280f36d90684210a86f3630subrata_modak/* along with this program; if not, write to the Free Software */ 164548c6cf9bcdd96d8303caa4130ab638b61f8a30Wanlong Gao/* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ 176e05831f23c0bfbad280f36d90684210a86f3630subrata_modak/* */ 186e05831f23c0bfbad280f36d90684210a86f3630subrata_modak/******************************************************************************/ 196e05831f23c0bfbad280f36d90684210a86f3630subrata_modak/******************************************************************************/ 206e05831f23c0bfbad280f36d90684210a86f3630subrata_modak/* */ 216e05831f23c0bfbad280f36d90684210a86f3630subrata_modak/* File: newuname01.c */ 226e05831f23c0bfbad280f36d90684210a86f3630subrata_modak/* */ 236e05831f23c0bfbad280f36d90684210a86f3630subrata_modak/* Description: This tests the newuname() syscall */ 246e05831f23c0bfbad280f36d90684210a86f3630subrata_modak/* */ 256e05831f23c0bfbad280f36d90684210a86f3630subrata_modak/* Usage: <for command-line> */ 266e05831f23c0bfbad280f36d90684210a86f3630subrata_modak/* newuname01 [-c n] [-e][-i n] [-I x] [-p x] [-t] */ 276e05831f23c0bfbad280f36d90684210a86f3630subrata_modak/* where, -c n : Run n copies concurrently. */ 286e05831f23c0bfbad280f36d90684210a86f3630subrata_modak/* -e : Turn on errno logging. */ 296e05831f23c0bfbad280f36d90684210a86f3630subrata_modak/* -i n : Execute test n times. */ 306e05831f23c0bfbad280f36d90684210a86f3630subrata_modak/* -I x : Execute test for x seconds. */ 316e05831f23c0bfbad280f36d90684210a86f3630subrata_modak/* -P x : Pause for x seconds between iterations. */ 326e05831f23c0bfbad280f36d90684210a86f3630subrata_modak/* -t : Turn on syscall timing. */ 336e05831f23c0bfbad280f36d90684210a86f3630subrata_modak/* */ 346e05831f23c0bfbad280f36d90684210a86f3630subrata_modak/* Total Tests: 1 */ 356e05831f23c0bfbad280f36d90684210a86f3630subrata_modak/* */ 366e05831f23c0bfbad280f36d90684210a86f3630subrata_modak/* Test Name: newuname01 */ 376e05831f23c0bfbad280f36d90684210a86f3630subrata_modak/* History: Porting from Crackerjack to LTP is done by */ 386e05831f23c0bfbad280f36d90684210a86f3630subrata_modak/* Manas Kumar Nayak maknayak@in.ibm.com> */ 396e05831f23c0bfbad280f36d90684210a86f3630subrata_modak/******************************************************************************/ 406e05831f23c0bfbad280f36d90684210a86f3630subrata_modak#include <unistd.h> 416e05831f23c0bfbad280f36d90684210a86f3630subrata_modak#include <sys/utsname.h> 426e05831f23c0bfbad280f36d90684210a86f3630subrata_modak#include <errno.h> 436e05831f23c0bfbad280f36d90684210a86f3630subrata_modak#include <stdio.h> 446e05831f23c0bfbad280f36d90684210a86f3630subrata_modak#include <sys/stat.h> 456e05831f23c0bfbad280f36d90684210a86f3630subrata_modak#include <stdlib.h> 466e05831f23c0bfbad280f36d90684210a86f3630subrata_modak 476e05831f23c0bfbad280f36d90684210a86f3630subrata_modak#include "test.h" 48817d8095fbfe5ebe22b29f58b7483f3d8d5e3fccRichard Palethorpe#include "lapi/syscalls.h" 496e05831f23c0bfbad280f36d90684210a86f3630subrata_modak 50fdce7d5e2a219d201a2b0e3bab6b61b01ec1d716Cyril Hrubischar *TCID = "newuname01"; 51354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gaoint testno; 52fdce7d5e2a219d201a2b0e3bab6b61b01ec1d716Cyril Hrubisint TST_TOTAL = 1; 536e05831f23c0bfbad280f36d90684210a86f3630subrata_modak 546e05831f23c0bfbad280f36d90684210a86f3630subrata_modak/* Extern Global Functions */ 556e05831f23c0bfbad280f36d90684210a86f3630subrata_modak/******************************************************************************/ 566e05831f23c0bfbad280f36d90684210a86f3630subrata_modak/* */ 576e05831f23c0bfbad280f36d90684210a86f3630subrata_modak/* Function: cleanup */ 586e05831f23c0bfbad280f36d90684210a86f3630subrata_modak/* */ 596e05831f23c0bfbad280f36d90684210a86f3630subrata_modak/* Description: Performs all one time clean up for this test on successful */ 606e05831f23c0bfbad280f36d90684210a86f3630subrata_modak/* completion, premature exit or failure. Closes all temporary */ 616e05831f23c0bfbad280f36d90684210a86f3630subrata_modak/* files, removes all temporary directories exits the test with */ 626e05831f23c0bfbad280f36d90684210a86f3630subrata_modak/* appropriate return code by calling tst_exit() function. */ 636e05831f23c0bfbad280f36d90684210a86f3630subrata_modak/* */ 646e05831f23c0bfbad280f36d90684210a86f3630subrata_modak/* Input: None. */ 656e05831f23c0bfbad280f36d90684210a86f3630subrata_modak/* */ 666e05831f23c0bfbad280f36d90684210a86f3630subrata_modak/* Output: None. */ 676e05831f23c0bfbad280f36d90684210a86f3630subrata_modak/* */ 686e05831f23c0bfbad280f36d90684210a86f3630subrata_modak/* Return: On failure - Exits calling tst_exit(). Non '0' return code. */ 696e05831f23c0bfbad280f36d90684210a86f3630subrata_modak/* On success - Exits calling tst_exit(). With '0' return code. */ 706e05831f23c0bfbad280f36d90684210a86f3630subrata_modak/* */ 716e05831f23c0bfbad280f36d90684210a86f3630subrata_modak/******************************************************************************/ 72c57fba5535abf457e33dd7a986b6c512d95cdef6Mike Frysingervoid cleanup(void) 73354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao{ 742c28215423293e443469a07ae7011135d058b671Garrett Cooper 75354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao tst_rmdir(); 766e05831f23c0bfbad280f36d90684210a86f3630subrata_modak 77354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao tst_exit(); 786e05831f23c0bfbad280f36d90684210a86f3630subrata_modak} 796e05831f23c0bfbad280f36d90684210a86f3630subrata_modak 806e05831f23c0bfbad280f36d90684210a86f3630subrata_modak/* Local Functions */ 816e05831f23c0bfbad280f36d90684210a86f3630subrata_modak/******************************************************************************/ 826e05831f23c0bfbad280f36d90684210a86f3630subrata_modak/* */ 836e05831f23c0bfbad280f36d90684210a86f3630subrata_modak/* Function: setup */ 846e05831f23c0bfbad280f36d90684210a86f3630subrata_modak/* */ 856e05831f23c0bfbad280f36d90684210a86f3630subrata_modak/* Description: Performs all one time setup for this test. This function is */ 866e05831f23c0bfbad280f36d90684210a86f3630subrata_modak/* typically used to capture signals, create temporary dirs */ 876e05831f23c0bfbad280f36d90684210a86f3630subrata_modak/* and temporary files that may be used in the course of this */ 886e05831f23c0bfbad280f36d90684210a86f3630subrata_modak/* test. */ 896e05831f23c0bfbad280f36d90684210a86f3630subrata_modak/* */ 906e05831f23c0bfbad280f36d90684210a86f3630subrata_modak/* Input: None. */ 916e05831f23c0bfbad280f36d90684210a86f3630subrata_modak/* */ 926e05831f23c0bfbad280f36d90684210a86f3630subrata_modak/* Output: None. */ 936e05831f23c0bfbad280f36d90684210a86f3630subrata_modak/* */ 946e05831f23c0bfbad280f36d90684210a86f3630subrata_modak/* Return: On failure - Exits by calling cleanup(). */ 956e05831f23c0bfbad280f36d90684210a86f3630subrata_modak/* On success - returns 0. */ 966e05831f23c0bfbad280f36d90684210a86f3630subrata_modak/* */ 976e05831f23c0bfbad280f36d90684210a86f3630subrata_modak/******************************************************************************/ 98c57fba5535abf457e33dd7a986b6c512d95cdef6Mike Frysingervoid setup(void) 99354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao{ 100354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao /* Capture signals if any */ 101354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao /* Create temporary directories */ 102354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao TEST_PAUSE; 103354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao tst_tmpdir(); 1046e05831f23c0bfbad280f36d90684210a86f3630subrata_modak} 1056e05831f23c0bfbad280f36d90684210a86f3630subrata_modak 106354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gaoint main(int ac, char **av) 107354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao{ 108354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao struct utsname name; 10989af32a63ce8a780ea39337339e14caae244b5a4Cyril Hrubis int lc; 1102c28215423293e443469a07ae7011135d058b671Garrett Cooper 111d6d11d08678aac1ed2c370ea8e42e5f45aea07beCyril Hrubis tst_parse_opts(ac, av, NULL, NULL); 1126e05831f23c0bfbad280f36d90684210a86f3630subrata_modak 113354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao setup(); 1146e05831f23c0bfbad280f36d90684210a86f3630subrata_modak 115354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao for (lc = 0; TEST_LOOPING(lc); ++lc) { 116d59a659cd639ca2780b00049d102acd2a783d585Caspar Zhang tst_count = 0; 117354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao for (testno = 0; testno < TST_TOTAL; ++testno) { 118359980f68b19c77c698b121b57a071dfe6e3ca31Jan Stancek TEST(ltp_syscall(__NR_uname, &name)); 119354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao if (TEST_RETURN == -1) { 1209fa8ad01f33c6390cc08626a185111631c8df495Cyril Hrubis tst_brkm(TFAIL, cleanup, "%s failed - errno = %d : %s", 121354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao TCID, TEST_ERRNO, 122354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao strerror(TEST_ERRNO)); 123354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao } else { 124354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao tst_resm(TPASS, 125354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao "newuname call succeed: return value = %ld ", 126354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao TEST_RETURN); 127354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao TEST(strcmp(name.sysname, "Linux")); //Linux ? 128354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao if (TEST_RETURN == 0) { 129354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao tst_resm(TINFO, "This system is %s", 130354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao name.sysname); 131354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao tst_resm(TINFO, 132354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao "The system infomation is :"); 133354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao tst_resm(TINFO, 134354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao "System is %s on %s hardware", 135354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao name.sysname, name.machine); 1366e05831f23c0bfbad280f36d90684210a86f3630subrata_modak 137354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao tst_resm(TINFO, "Nodename is %s", 138354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao name.nodename); 139354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao tst_resm(TINFO, "Version is %s, %s", 140354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao name.release, name.version); 141354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao tst_resm(TINFO, "Domainname is %s ", 142354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao *(&name.machine + 1)); 143354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao cleanup(); 144354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao tst_exit(); 145354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao } else { 146354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao tst_resm(TFAIL, 147354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao "%s failed - errno = %d : %s", 148354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao TCID, TEST_ERRNO, 149354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao strerror(TEST_ERRNO)); 150354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao tst_resm(TINFO, 151354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao "This system is not Linux"); 152354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao cleanup(); 153354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao tst_exit(); 154354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao } 1552c28215423293e443469a07ae7011135d058b671Garrett Cooper 156354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao } 1572c28215423293e443469a07ae7011135d058b671Garrett Cooper 158354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao } 1596e05831f23c0bfbad280f36d90684210a86f3630subrata_modak } 160354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao tst_exit(); 161ec6edca7aa42b6affd989ef91b5897f96795e40fChris Dearman} 162