Port Crackerjack Syscall tests(missing) to LTP
cover Port Crackerjack Syscall tests(missing) to LTP
Hi,
As promised earlier, here lies the final bunch of test cases from Crackerjack. I would however keep contributing new tests to LTP.
Quoted 51 lines · Manas Kumar Nayak
Hi,
Quoted 28 lines · Manas Kumar Nayak
Hi,
I have ported the following tests from Crackerjack to LTP. Kindly include them to LTP:
[PATCH 01/21] Add
add_key01test foradd_keysyscall
[PATCH 02/21] Addadd_key02test foradd_keysyscall
[PATCH 03/21] Add bdflush01 test for bdflush syscall
[PATCH 04/21] Addexit_group01test forexit_groupsyscall [PATCH 05/21] Add keyctl01 test for keyctl syscall
[PATCH 06/21] Add newuname01 test for newuname syscall [PATCH 07/21] Addrt_sigaction01test forrt_sigactionsyscall [PATCH 08/21] Addrt_sigprocmask01test forrt_sigprocmasksyscall [PATCH 09/21] Addrt_sigprocmask02test forrt_sigprocmasksyscall [PATCH 10/21] Addrt_sigqueueinfo01test forrt_sigqueueinfosyscall [PATCH 11/21] Addrt_sigsuspend01test forrt_sigsuspendsyscall [PATCH 12/21] Addset_thread_area01test forset_thread_areasyscall [PATCH 13/21] Addset_thread_area02test forset_thread_areasyscall [PATCH 14/21] Addset_tid_address01test forset_tid_addresssyscall [PATCH 15/21] Add sgetmask01 test for sgetmask syscall [PATCH 16/21] Add sigreturn01 test for sigreturn syscall [PATCH 17/21] Add ssetmask01 test for ssetmask syscall [PATCH 18/21] Addtimer_getoverrun01test fortimer_getoverrun01syscall [PATCH 19/21] Addtimer_gettime01test fortimer_gettimesyscall [PATCH 20/21] Add tkill01 test for tkill syscall
[PATCH 21/21] Add tkill02 test for tkill syscallQuoted 2 lines
Todo:
1) Port the Remaining ones (next week),As promised earlier, here remains the 2nd Bunch of tests ported from Crackerjack to LTP:
__001_Add_Utility_Headers_for_these_set_of_tests.patch __002_Add_get_mempolicy01_test_for_get_mempolicy_syscall.patch __003_Add_clock_getres01_test_for_clock_getres_syscall.patch __004_Add_clock_nanosleep01_test_for_clock_nanosleep_syscall.patch __005_Add_mq_notify01_test_for_mq_notify_syscall.patch __006_Add_ppoll01_test_for_ppoll_syscall.patch __007_Add_mq_open01_test_for_mq_open_syscall.patch __008_Add_mq_timedreceive01_test_for_mq_timedreceive_syscall.patch __009_Add_utimes01_test_for_utimes_syscall.patch __010_Add_mq_unlink01_test_for_mq_unlink_syscall.patch __011_Add_mq_timedsend01_test_for_mq_timedsend_syscall.patch __012_Add_unshare01_test_for_unshare_syscall.patch __013_Add_unshare02_test_for_unshare_syscall.patch
Quoted 2 lines
Still TODO:
-> The remaining testcases will be ported soon.
[PATCH 00/05] [3rd Bunch] Port Crackerjack Syscall tests(missing) to LTP [PATCH 01/05] Add/Port mbind01 test for mbind() syscall
[PATCH 02/05] Add/Port sched_getaffinity01 test for sched_getaffinity() syscall [PATCH 03/05] Add/Port waitid01 test for waitid() syscall
[PATCH 04/05] Add/Port waitid02 test for waitid() syscall
[PATCH 05/05] Add/Port quotactl01 test for quotactl() syscall
Regards--
Manas
Quoted 8 lines
Regards--
ManasQuoted 4 lines
Regards--
Manas
------------------------------------------------------------------------------
Crystal Reports - New Free Runtime and 30 Day Trial
Check out the new simplified licensing option that enables unlimited royalty-free distribution of the report engine for externally facing server and web deployment.
http://p.sf.net/sfu/businessobjects
_______________________________________________
Ltp-list mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ltp-list
PATCH 1/5 Add/Port mbind01 test for mbind() syscall
To: LTP List <[email protected]>
Cc: Subrata Modak <[email protected]>
Cc: Masatake YAMATO <[email protected]>
---
testcases/kernel/syscalls/mbind/Makefile +31 -0
@@ -0,0 +1,31 @@ +# +# Copyright (c) International Business Machines Corp., 2009 +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See +# the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# + +CFLAGS += -I../../../../include -I../utils/ -Wall -O2 +LDLIBS += -L../../../../lib -lltp + +SRCS = $(wildcard *.c) +TARGETS = $(patsubst %.c,%,$(SRCS)) + +all: $(TARGETS) + +install: + @set -e; for i in $(TARGETS); do ln -f $$i ../../../bin/$$i ; done + +clean: + rm -f $(TARGETS)
testcases/kernel/syscalls/mbind/mbind01.c +415 -0
415 lines not on this page · raw message
runtest/syscalls +2 -0
@@ -506,6 +506,8 @@ lstat03_64 lstat03_64 mallopt01 mallopt01 +mbind01 mbind01 + memset01 memset01 memcmp01 memcmp01 memcpy01 memcpy01
---
Regards--
Manas
------------------------------------------------------------------------------
Crystal Reports - New Free Runtime and 30 Day Trial
Check out the new simplified licensing option that enables unlimited royalty-free distribution of the report engine for externally facing server and web deployment.
http://p.sf.net/sfu/businessobjects
_______________________________________________
Ltp-list mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ltp-list
Re: [LTP] [PATCH 01/05] Add/Port mbind01 test for mbind() syscall
Quoted 1 line · Manas Kumar Nayak
Signed-off-by Manas Kumar Nayak <[email protected]>
Thanks.
Regards--
Subrata
Quoted 470 lines
To: LTP List <[email protected]>
Cc: Subrata Modak <[email protected]>
Cc: Masatake YAMATO <[email protected]>
---testcases/kernel/syscalls/mbind/Makefile +31
-0@@ -0,0 +1,31 @@ +# +# Copyright (c) International Business Machines Corp., 2009 +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See +# the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# + +CFLAGS += -I../../../../include -I../utils/ -Wall -O2 +LDLIBS += -L../../../../lib -lltp + +SRCS = $(wildcard *.c) +TARGETS = $(patsubst %.c,%,$(SRCS)) + +all: $(TARGETS) + +install: + @set -e; for i in $(TARGETS); do ln -f $$i ../../../bin/$$i ; done + +clean: + rm -f $(TARGETS)testcases/kernel/syscalls/mbind/mbind01.c +415
-0@@ -0,0 +1,415 @@ +/******************************************************************************/ +/* Copyright (c) Crackerjack Project., 2007-2008 */ +/* Author(s): Takahiro Yasui <[email protected]>, */ +/* Yumiko Sugita <[email protected]>, */ +/* Satoshi Fujiwara <[email protected]> */ +/* */ +/* This program is free software; you can redistribute it and/or modify */ +/* it under the terms of the GNU General Public License as published by */ +/* the Free Software Foundation; either version 2 of the License, or */ +/* (at your option) any later version. */ +/* */ +/* This program is distributed in the hope that it will be useful, */ +/* but WITHOUT ANY WARRANTY; without even the implied warranty of */ +/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See */ +/* the GNU General Public License for more details. */ +/* */ +/* You should have received a copy of the GNU General Public License */ +/* along with this program; if not, write to the Free Software */ +/* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +/* */ +/******************************************************************************/ +/******************************************************************************/ +/* */ +/* File: mbind01.c */ +/* */ +/* Description: This tests the mbind() syscall */ +/* */ +/* Usage: <for command-line> */ +/* mbind01 [-c n] [-e][-i n] [-I x] [-p x] [-t] */ +/* where, -c n : Run n copies concurrently. */ +/* -e : Turn on errno logging. */ +/* -i n : Execute test n times. */ +/* -I x : Execute test for x seconds. */ +/* -P x : Pause for x seconds between iterations. */ +/* -t : Turn on syscall timing. */ +/* */ +/* Total Tests: 1 */ +/* */ +/* Test Name: mbind01 */ +/* History: Porting from Crackerjack to LTP is done by */ +/* Manas Kumar Nayak [email protected]> */ +/******************************************************************************/ + +#include <stdio.h> +#include <stdlib.h> +#include <errno.h> +#include <unistd.h> + +#include <sys/syscall.h> +#include <sys/types.h> +#include <sys/mman.h> +#include <getopt.h> +#include <string.h> +#include <stdlib.h> +#include <errno.h> +#include <stdio.h> +#include <unistd.h> +#include "numaif.h" +#include "include_j_h.h" + +/* Harness Specific Include Files. */ +#include "test.h" +#include "usctest.h" +#include "linux_syscall_numbers.h" + +/* Extern Global Variables */ +extern int Tst_count;/* counter for tst_xxx routines. */ +extern char *TESTDIR ;/* temporary dir created by tst_tmpdir() */ + +/* Global Variables */ +char *TCID ="mbind01" ;/* Test program identifier.*/ +int testno; +int TST_TOTAL =2 ;/* total number of tests in this file. */ + +/* Extern Global Functions */ +/******************************************************************************/ +/* */ +/* Function: cleanup */ +/* */ +/* Description: Performs all one time clean up for this test on successful */ +/* completion, premature exit or failure. Closes all temporary */ +/* files, removes all temporary directories exits the test with */ +/* appropriate return code by calling tst_exit() function. */ +/* */ +/* Input: None. */ +/* */ +/* Output: None. */ +/* */ +/* Return: On failure - Exits calling tst_exit(). Non '0' return code. */ +/* On success - Exits calling tst_exit(). With '0' return code. */ +/* */ +/******************************************************************************/ +extern void cleanup () { +/* Remove tmp dir and all files in it */ +TEST_CLEANUP ; +tst_rmdir (); + +/* Exit with appropriate return code. */ +tst_exit (); +} + +/* Local Functions */ +/******************************************************************************/ +/* */ +/* Function: setup */ +/* */ +/* Description: Performs all one time setup for this test. This function is */ +/* typically used to capture signals, create temporary dirs */ +/* and temporary files that may be used in the course of this */ +/* test. */ +/* */ +/* Input: None. */ +/* */ +/* Output: None. */ +/* */ +/* Return: On failure - Exits by calling cleanup(). */ +/* On success - returns 0. */ +/* */ +/******************************************************************************/ +void setup () { +/* Capture signals if any */ +/* Create temporary directories */ +TEST_PAUSE ; +tst_tmpdir (); +} + +int sig_count =0 ; + +void sig_action (int sig) { + sig_count =1 ; +} + +/* +* Macros +*/ +#define SYSCALL_NAME "mbind" + +/* +* Global variables +*/ +static int opt_debug; +static char *progname; + +enum test_type { +NORMAL , +INVALID_POINTER , +}; + +enum from_node { +NONE , +SELF , +}; + +/* +* Data Structure +*/ +struct test_case { +int ttype; +int policy; +int from_node; +unsigned flags; +int ret; +int err; +}; + +/* Test cases +* +* test status of errors on man page +* +* EFAULT v (detect unmapped hole or invalid pointer) +* EINVAL v (invalid arguments) +* ENOMEM can't check because it's difficult to create no-memory +* EIO can't check because we don't have N-node NUMA system +* (only we can do is simulate 1-node NUMA) +*/ + +static struct test_case tcase[] = { + {// case00 + .policy =MPOL_DEFAULT , + .from_node =NONE , + .ret =0 , + .err =0 , + }, + {// case01 + .policy =MPOL_DEFAULT , + .from_node =SELF ,// target exists + .ret =-1 , + .err =EINVAL , + }, + {// case02 + .policy =MPOL_BIND , + .from_node =NONE ,// no target + .ret =-1 , + .err =EINVAL , + }, + {// case03 + .policy =MPOL_BIND , + .from_node =SELF , + .ret =0 , + .err =0 , + }, + {// case04 + .policy =MPOL_INTERLEAVE , + .from_node =NONE ,// no target + .ret =-1 , + .err =EINVAL , + }, + {// case05 + .policy =MPOL_INTERLEAVE , + .from_node =SELF , + .ret =0 , + .err =0 , + }, + {// case06 + .policy =MPOL_PREFERRED , + .from_node =NONE , + .ret =0 , + .err =0 , + }, + {// case07 + .policy =MPOL_PREFERRED , + .from_node =SELF , + .ret =0 , + .err =0 , + }, + {// case08 + .policy =-1 ,// unknown policy + .from_node =NONE , + .ret =-1 , + .err =EINVAL , + }, + {// case09 + .policy =MPOL_DEFAULT , + .from_node =NONE , + .flags =-1 ,// invalid flags + .ret =-1 , + .err =EINVAL , + }, + {// case10 + .ttype =INVALID_POINTER , + .policy =MPOL_DEFAULT , + .from_node =NONE , + .ret =-1 , + .err =EFAULT , + }, +}; + +#define MEM_LENGTH (4 * 1024 * 1024) +/* +* do_test() +* +* Input : TestCase Data +* Return : RESULT_OK(0), RESULT_NG(1) +* +*/ + +static int do_test (struct test_case *tc) { +int sys_ret; +int sys_errno; +int result =RESULT_OK ; +int rc, policy, cmp_ok =1 ; +char *p =NULL ; +nodemask_t nodemask, getnodemask; +unsigned long maxnode =NUMA_NUM_NODES ; +unsigned long len =MEM_LENGTH ; + +/* We assume that there is only one node(node0). */ +nodemask_zero (&nodemask); +nodemask_set (&nodemask,0 ); +nodemask_zero (&getnodemask); + +/* +* mmap memory +*/ + p =mmap (NULL , len,PROT_READ |PROT_WRITE ,MAP_PRIVATE |MAP_ANONYMOUS ,0 ,0 ); +if (p == (void *)-1 ) { +tst_resm (TFAIL ,"malloc failed - errno = %d : %s" ,TEST_ERRNO ,strerror (TEST_ERRNO )); +cleanup (); +tst_exit (); + } +if (tc->ttype ==INVALID_POINTER ) + p = (char *)0xc0000000 ; +/* +* Execute system call +*/ + errno =0 ; +if (tc->from_node ==NONE ) +TEST (sys_ret =syscall (__NR_mbind, p, len, tc->policy,NULL ,0 , tc->flags)); +else +TEST (sys_ret =syscall (__NR_mbind, p, len, tc->policy,&nodemask, maxnode, tc->flags)); + sys_errno = errno; +if (sys_ret <0 ) + goto TEST_END; + +/* +* Check policy of the allocated memory +*/ +TEST (rc =syscall (__NR_get_mempolicy, &policy, &getnodemask, maxnode,p,MPOL_F_ADDR )); +if (rc <0 ) { +tst_resm (TFAIL ,"get_mempolicy failed - errno = %d : %s" ,TEST_ERRNO ,strerror (TEST_ERRNO )); + result =1 ; +tst_exit (); + } + +// When policy equals MPOL_DEFAULT, then get_mempolicy not return node +if (tc->policy ==MPOL_DEFAULT ) +nodemask_zero (&nodemask); + cmp_ok = ((tc->policy == policy) &&nodemask_equal (&nodemask,&getnodemask)); +if (opt_debug) { +nodemask_dump ("nodemask Expect:" , &nodemask); +nodemask_dump ("nodemask Result:" , &getnodemask); +tst_resm (TINFO ,"policy E:%d R:%d" , tc->policy, policy); + } + + +TEST_END: +/* +* Check results +*/ + result |= ((sys_errno != tc->err) || (!cmp_ok)); +PRINT_RESULT_CMP (0 , tc->ret, tc->err, sys_ret, sys_errno, cmp_ok); +return result; +} + +/* +* usage() +*/ +static void usage (char *progname) { +tst_resm (TINFO ,"usage: %s [options]" , progname); +tst_resm (TINFO ,"This is a regression test program of %s system call." ,SYSCALL_NAME ); +tst_resm (TINFO ,"options:" ); +tst_resm (TINFO ," -d --debug Show debug messages" ); +tst_resm (TINFO ," -h --help Show this message" ); +tst_resm (TINFO ,"NG" ); +exit (1 ); +} + + + + + +int main (int ac,char **av) { +int result =0 ; +int lc, i;/* loop counter */ +char *msg;/* message returned from parse_opts */ + +struct option long_options[] = { + {"debug" , no_argument,0 ,'d' }, + {"help" , no_argument,0 ,'h' }, + {NULL ,0 ,NULL ,0 } + }; + +/* parse standard options */ +if ((msg =parse_opts (ac, av, (option_t *)NULL ,NULL )) != (char *)NULL ){ +tst_brkm (TBROK , cleanup,"OPTION PARSING ERROR - %s" , msg); +tst_exit (); + } + +setup (); + + progname =strchr (av[0 ],'/' ); + progname = (progname ? progname +1 : av[0 ]); + +/* Check looping state if -i option given */ +for (lc =0 ;TEST_LOOPING (lc); ++lc) { + Tst_count =0 ; +for (testno =0 ; testno <TST_TOTAL ; ++testno) { +TEST (getopt_long (ac, av,"dh" , long_options,NULL )); +while (TEST_RETURN !=-1 ){ +switch (TEST_RETURN ) { +case 'd' : + opt_debug =1 ; +break ; +default : +usage (progname); + } + }/* end of while */ +if (ac != optind) { +tst_resm (TFAIL ,"Options are not match - errno = %d : %s" ,TEST_ERRNO ,strerror (TEST_ERRNO )); +usage (progname); +cleanup (); +tst_exit (); + } + +/* +* Execute test +*/ +for (i =0 ; i < (int )(sizeof (tcase) /sizeof (tcase[0 ])); i++) { +int ret; +tst_resm (TINFO ,"(case%02d) START" , i); + ret =do_test (&tcase[i]); +tst_resm (TINFO ,"(case%02d) END => %s" , i, (TEST_RETURN ==0 ) ?"OK" :"NG" ); + result |= ret; + } + +/* +* Check results +*/ +switch (result) { +case RESULT_OK : +tst_resm (TPASS ,"mbind call succeeded --OK-- " ); + +default : +tst_resm (TFAIL ,"%s failed - errno = %d : %s --NG--" ,TCID ,TEST_ERRNO ,strerror (TEST_ERRNO )); +cleanup (); +tst_exit (); + } + + + } + } +cleanup (); +tst_exit (); +} +runtest/syscalls +2
-1@@ -506,6 +506,8 @@ lstat03_64 lstat03_64 mallopt01 mallopt01 +mbind01 mbind01 + memset01 memset01 memcmp01 memcmp01 memcpy01 memcpy01 ---
Quoted 3 lines
Regards--
Manas
------------------------------------------------------------------------------
Crystal Reports - New Free Runtime and 30 Day Trial
Check out the new simplified licensing option that enables unlimited royalty-free distribution of the report engine for externally facing server and web deployment.
http://p.sf.net/sfu/businessobjects
_______________________________________________
Ltp-list mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ltp-list
Re: [LTP] [PATCH 01/05] Add/Port mbind01 test for mbind() syscall
In reply to Manas Kumar NayakQuoted 1 line · Manas Kumar Nayak
Signed-off-by Manas Kumar Nayak <[email protected]>
Thanks.
Regards--
Subrata
Quoted 470 lines
To: LTP List <[email protected]>
Cc: Subrata Modak <[email protected]>
Cc: Masatake YAMATO <[email protected]>
---testcases/kernel/syscalls/mbind/Makefile +31
-0@@ -0,0 +1,31 @@ +# +# Copyright (c) International Business Machines Corp., 2009 +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See +# the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# + +CFLAGS += -I../../../../include -I../utils/ -Wall -O2 +LDLIBS += -L../../../../lib -lltp + +SRCS = $(wildcard *.c) +TARGETS = $(patsubst %.c,%,$(SRCS)) + +all: $(TARGETS) + +install: + @set -e; for i in $(TARGETS); do ln -f $$i ../../../bin/$$i ; done + +clean: + rm -f $(TARGETS)testcases/kernel/syscalls/mbind/mbind01.c +415
-0@@ -0,0 +1,415 @@ +/******************************************************************************/ +/* Copyright (c) Crackerjack Project., 2007-2008 */ +/* Author(s): Takahiro Yasui <[email protected]>, */ +/* Yumiko Sugita <[email protected]>, */ +/* Satoshi Fujiwara <[email protected]> */ +/* */ +/* This program is free software; you can redistribute it and/or modify */ +/* it under the terms of the GNU General Public License as published by */ +/* the Free Software Foundation; either version 2 of the License, or */ +/* (at your option) any later version. */ +/* */ +/* This program is distributed in the hope that it will be useful, */ +/* but WITHOUT ANY WARRANTY; without even the implied warranty of */ +/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See */ +/* the GNU General Public License for more details. */ +/* */ +/* You should have received a copy of the GNU General Public License */ +/* along with this program; if not, write to the Free Software */ +/* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +/* */ +/******************************************************************************/ +/******************************************************************************/ +/* */ +/* File: mbind01.c */ +/* */ +/* Description: This tests the mbind() syscall */ +/* */ +/* Usage: <for command-line> */ +/* mbind01 [-c n] [-e][-i n] [-I x] [-p x] [-t] */ +/* where, -c n : Run n copies concurrently. */ +/* -e : Turn on errno logging. */ +/* -i n : Execute test n times. */ +/* -I x : Execute test for x seconds. */ +/* -P x : Pause for x seconds between iterations. */ +/* -t : Turn on syscall timing. */ +/* */ +/* Total Tests: 1 */ +/* */ +/* Test Name: mbind01 */ +/* History: Porting from Crackerjack to LTP is done by */ +/* Manas Kumar Nayak [email protected]> */ +/******************************************************************************/ + +#include <stdio.h> +#include <stdlib.h> +#include <errno.h> +#include <unistd.h> + +#include <sys/syscall.h> +#include <sys/types.h> +#include <sys/mman.h> +#include <getopt.h> +#include <string.h> +#include <stdlib.h> +#include <errno.h> +#include <stdio.h> +#include <unistd.h> +#include "numaif.h" +#include "include_j_h.h" + +/* Harness Specific Include Files. */ +#include "test.h" +#include "usctest.h" +#include "linux_syscall_numbers.h" + +/* Extern Global Variables */ +extern int Tst_count;/* counter for tst_xxx routines. */ +extern char *TESTDIR ;/* temporary dir created by tst_tmpdir() */ + +/* Global Variables */ +char *TCID ="mbind01" ;/* Test program identifier.*/ +int testno; +int TST_TOTAL =2 ;/* total number of tests in this file. */ + +/* Extern Global Functions */ +/******************************************************************************/ +/* */ +/* Function: cleanup */ +/* */ +/* Description: Performs all one time clean up for this test on successful */ +/* completion, premature exit or failure. Closes all temporary */ +/* files, removes all temporary directories exits the test with */ +/* appropriate return code by calling tst_exit() function. */ +/* */ +/* Input: None. */ +/* */ +/* Output: None. */ +/* */ +/* Return: On failure - Exits calling tst_exit(). Non '0' return code. */ +/* On success - Exits calling tst_exit(). With '0' return code. */ +/* */ +/******************************************************************************/ +extern void cleanup () { +/* Remove tmp dir and all files in it */ +TEST_CLEANUP ; +tst_rmdir (); + +/* Exit with appropriate return code. */ +tst_exit (); +} + +/* Local Functions */ +/******************************************************************************/ +/* */ +/* Function: setup */ +/* */ +/* Description: Performs all one time setup for this test. This function is */ +/* typically used to capture signals, create temporary dirs */ +/* and temporary files that may be used in the course of this */ +/* test. */ +/* */ +/* Input: None. */ +/* */ +/* Output: None. */ +/* */ +/* Return: On failure - Exits by calling cleanup(). */ +/* On success - returns 0. */ +/* */ +/******************************************************************************/ +void setup () { +/* Capture signals if any */ +/* Create temporary directories */ +TEST_PAUSE ; +tst_tmpdir (); +} + +int sig_count =0 ; + +void sig_action (int sig) { + sig_count =1 ; +} + +/* +* Macros +*/ +#define SYSCALL_NAME "mbind" + +/* +* Global variables +*/ +static int opt_debug; +static char *progname; + +enum test_type { +NORMAL , +INVALID_POINTER , +}; + +enum from_node { +NONE , +SELF , +}; + +/* +* Data Structure +*/ +struct test_case { +int ttype; +int policy; +int from_node; +unsigned flags; +int ret; +int err; +}; + +/* Test cases +* +* test status of errors on man page +* +* EFAULT v (detect unmapped hole or invalid pointer) +* EINVAL v (invalid arguments) +* ENOMEM can't check because it's difficult to create no-memory +* EIO can't check because we don't have N-node NUMA system +* (only we can do is simulate 1-node NUMA) +*/ + +static struct test_case tcase[] = { + {// case00 + .policy =MPOL_DEFAULT , + .from_node =NONE , + .ret =0 , + .err =0 , + }, + {// case01 + .policy =MPOL_DEFAULT , + .from_node =SELF ,// target exists + .ret =-1 , + .err =EINVAL , + }, + {// case02 + .policy =MPOL_BIND , + .from_node =NONE ,// no target + .ret =-1 , + .err =EINVAL , + }, + {// case03 + .policy =MPOL_BIND , + .from_node =SELF , + .ret =0 , + .err =0 , + }, + {// case04 + .policy =MPOL_INTERLEAVE , + .from_node =NONE ,// no target + .ret =-1 , + .err =EINVAL , + }, + {// case05 + .policy =MPOL_INTERLEAVE , + .from_node =SELF , + .ret =0 , + .err =0 , + }, + {// case06 + .policy =MPOL_PREFERRED , + .from_node =NONE , + .ret =0 , + .err =0 , + }, + {// case07 + .policy =MPOL_PREFERRED , + .from_node =SELF , + .ret =0 , + .err =0 , + }, + {// case08 + .policy =-1 ,// unknown policy + .from_node =NONE , + .ret =-1 , + .err =EINVAL , + }, + {// case09 + .policy =MPOL_DEFAULT , + .from_node =NONE , + .flags =-1 ,// invalid flags + .ret =-1 , + .err =EINVAL , + }, + {// case10 + .ttype =INVALID_POINTER , + .policy =MPOL_DEFAULT , + .from_node =NONE , + .ret =-1 , + .err =EFAULT , + }, +}; + +#define MEM_LENGTH (4 * 1024 * 1024) +/* +* do_test() +* +* Input : TestCase Data +* Return : RESULT_OK(0), RESULT_NG(1) +* +*/ + +static int do_test (struct test_case *tc) { +int sys_ret; +int sys_errno; +int result =RESULT_OK ; +int rc, policy, cmp_ok =1 ; +char *p =NULL ; +nodemask_t nodemask, getnodemask; +unsigned long maxnode =NUMA_NUM_NODES ; +unsigned long len =MEM_LENGTH ; + +/* We assume that there is only one node(node0). */ +nodemask_zero (&nodemask); +nodemask_set (&nodemask,0 ); +nodemask_zero (&getnodemask); + +/* +* mmap memory +*/ + p =mmap (NULL , len,PROT_READ |PROT_WRITE ,MAP_PRIVATE |MAP_ANONYMOUS ,0 ,0 ); +if (p == (void *)-1 ) { +tst_resm (TFAIL ,"malloc failed - errno = %d : %s" ,TEST_ERRNO ,strerror (TEST_ERRNO )); +cleanup (); +tst_exit (); + } +if (tc->ttype ==INVALID_POINTER ) + p = (char *)0xc0000000 ; +/* +* Execute system call +*/ + errno =0 ; +if (tc->from_node ==NONE ) +TEST (sys_ret =syscall (__NR_mbind, p, len, tc->policy,NULL ,0 , tc->flags)); +else +TEST (sys_ret =syscall (__NR_mbind, p, len, tc->policy,&nodemask, maxnode, tc->flags)); + sys_errno = errno; +if (sys_ret <0 ) + goto TEST_END; + +/* +* Check policy of the allocated memory +*/ +TEST (rc =syscall (__NR_get_mempolicy, &policy, &getnodemask, maxnode,p,MPOL_F_ADDR )); +if (rc <0 ) { +tst_resm (TFAIL ,"get_mempolicy failed - errno = %d : %s" ,TEST_ERRNO ,strerror (TEST_ERRNO )); + result =1 ; +tst_exit (); + } + +// When policy equals MPOL_DEFAULT, then get_mempolicy not return node +if (tc->policy ==MPOL_DEFAULT ) +nodemask_zero (&nodemask); + cmp_ok = ((tc->policy == policy) &&nodemask_equal (&nodemask,&getnodemask)); +if (opt_debug) { +nodemask_dump ("nodemask Expect:" , &nodemask); +nodemask_dump ("nodemask Result:" , &getnodemask); +tst_resm (TINFO ,"policy E:%d R:%d" , tc->policy, policy); + } + + +TEST_END: +/* +* Check results +*/ + result |= ((sys_errno != tc->err) || (!cmp_ok)); +PRINT_RESULT_CMP (0 , tc->ret, tc->err, sys_ret, sys_errno, cmp_ok); +return result; +} + +/* +* usage() +*/ +static void usage (char *progname) { +tst_resm (TINFO ,"usage: %s [options]" , progname); +tst_resm (TINFO ,"This is a regression test program of %s system call." ,SYSCALL_NAME ); +tst_resm (TINFO ,"options:" ); +tst_resm (TINFO ," -d --debug Show debug messages" ); +tst_resm (TINFO ," -h --help Show this message" ); +tst_resm (TINFO ,"NG" ); +exit (1 ); +} + + + + + +int main (int ac,char **av) { +int result =0 ; +int lc, i;/* loop counter */ +char *msg;/* message returned from parse_opts */ + +struct option long_options[] = { + {"debug" , no_argument,0 ,'d' }, + {"help" , no_argument,0 ,'h' }, + {NULL ,0 ,NULL ,0 } + }; + +/* parse standard options */ +if ((msg =parse_opts (ac, av, (option_t *)NULL ,NULL )) != (char *)NULL ){ +tst_brkm (TBROK , cleanup,"OPTION PARSING ERROR - %s" , msg); +tst_exit (); + } + +setup (); + + progname =strchr (av[0 ],'/' ); + progname = (progname ? progname +1 : av[0 ]); + +/* Check looping state if -i option given */ +for (lc =0 ;TEST_LOOPING (lc); ++lc) { + Tst_count =0 ; +for (testno =0 ; testno <TST_TOTAL ; ++testno) { +TEST (getopt_long (ac, av,"dh" , long_options,NULL )); +while (TEST_RETURN !=-1 ){ +switch (TEST_RETURN ) { +case 'd' : + opt_debug =1 ; +break ; +default : +usage (progname); + } + }/* end of while */ +if (ac != optind) { +tst_resm (TFAIL ,"Options are not match - errno = %d : %s" ,TEST_ERRNO ,strerror (TEST_ERRNO )); +usage (progname); +cleanup (); +tst_exit (); + } + +/* +* Execute test +*/ +for (i =0 ; i < (int )(sizeof (tcase) /sizeof (tcase[0 ])); i++) { +int ret; +tst_resm (TINFO ,"(case%02d) START" , i); + ret =do_test (&tcase[i]); +tst_resm (TINFO ,"(case%02d) END => %s" , i, (TEST_RETURN ==0 ) ?"OK" :"NG" ); + result |= ret; + } + +/* +* Check results +*/ +switch (result) { +case RESULT_OK : +tst_resm (TPASS ,"mbind call succeeded --OK-- " ); + +default : +tst_resm (TFAIL ,"%s failed - errno = %d : %s --NG--" ,TCID ,TEST_ERRNO ,strerror (TEST_ERRNO )); +cleanup (); +tst_exit (); + } + + + } + } +cleanup (); +tst_exit (); +} +runtest/syscalls +2
-1@@ -506,6 +506,8 @@ lstat03_64 lstat03_64 mallopt01 mallopt01 +mbind01 mbind01 + memset01 memset01 memcmp01 memcmp01 memcpy01 memcpy01 ---
Quoted 3 lines
Regards--
Manas
------------------------------------------------------------------------------
Crystal Reports - New Free Runtime and 30 Day Trial
Check out the new simplified licensing option that enables unlimited royalty-free distribution of the report engine for externally facing server and web deployment.
http://p.sf.net/sfu/businessobjects
_______________________________________________
Ltp-list mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ltp-list
PATCH 2/5 Add/Port sched_getaffinity01 test for sched_getaffinity() syscall
In reply to Manas Kumar NayakTo: LTP List <[email protected]>
Cc: Subrata Modak <[email protected]>
Cc: Masatake YAMATO <[email protected]>
---
testcases/kernel/syscalls/sched_getaffinity/Makefile +31 -0
@@ -0,0 +1,31 @@ +# +# Copyright (c) International Business Machines Corp., 2009 +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See +# the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# + +CFLAGS += -I../../../../include -Wall +LDLIBS += -L../../../../lib -lltp + +SRCS = $(wildcard *.c) +TARGETS = $(patsubst %.c,%,$(SRCS)) + +all: $(TARGETS) + +install: + @set -e; for i in $(TARGETS); do ln -f $$i ../../../bin/$$i ; done + +clean: + rm -f $(TARGETS)
testcases/kernel/syscalls/sched_getaffinity/sched_getaffinity01.c +197 -0
197 lines not on this page · raw message
runtest/syscalls +2 -0
@@ -837,6 +837,8 @@ sched_setscheduler02 sched_setscheduler0 sched_yield01 sched_yield01 +sched_getaffinity01 sched_getaffinity01 + select01 select01 select02 select02 select03 select03
---
Regards--
Manas
------------------------------------------------------------------------------
Crystal Reports - New Free Runtime and 30 Day Trial
Check out the new simplified licensing option that enables unlimited royalty-free distribution of the report engine for externally facing server and web deployment.
http://p.sf.net/sfu/businessobjects
_______________________________________________
Ltp-list mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ltp-list
Re: [LTP] [PATCH 02/05] Add/Port sched_getaffinity01 test for sched_getaffinity() syscall
Quoted 1 line · Manas Kumar Nayak
Signed-off-by Manas Kumar Nayak <[email protected]>
Thanks.
Regards--
Subrata
Quoted 252 lines
To: LTP List <[email protected]>
Cc: Subrata Modak <[email protected]>
Cc: Masatake YAMATO <[email protected]>
---testcases/kernel/syscalls/sched_getaffinity/Makefile +31
-0@@ -0,0 +1,31 @@ +# +# Copyright (c) International Business Machines Corp., 2009 +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See +# the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# + +CFLAGS += -I../../../../include -Wall +LDLIBS += -L../../../../lib -lltp + +SRCS = $(wildcard *.c) +TARGETS = $(patsubst %.c,%,$(SRCS)) + +all: $(TARGETS) + +install: + @set -e; for i in $(TARGETS); do ln -f $$i ../../../bin/$$i ; done + +clean: + rm -f $(TARGETS)testcases/kernel/syscalls/sched_getaffinity/sched_getaffinity01.c +197
-0@@ -0,0 +1,197 @@ +/******************************************************************************/ +/* Copyright (c) Crackerjack Project., 2007 */ +/* */ +/* This program is free software; you can redistribute it and/or modify */ +/* it under the terms of the GNU General Public License as published by */ +/* the Free Software Foundation; either version 2 of the License, or */ +/* (at your option) any later version. */ +/* */ +/* This program is distributed in the hope that it will be useful, */ +/* but WITHOUT ANY WARRANTY; without even the implied warranty of */ +/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See */ +/* the GNU General Public License for more details. */ +/* */ +/* You should have received a copy of the GNU General Public License */ +/* along with this program; if not, write to the Free Software */ +/* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +/* */ +/******************************************************************************/ +/******************************************************************************/ +/* */ +/* File: sched_getaffinity01.c */ +/* */ +/* Description: This tests the sched_getaffinity() syscall */ +/* */ +/* Usage: <for command-line> */ +/* sched_getaffinity01 [-c n] [-e][-i n] [-I x] [-p x] [-t] */ +/* where, -c n : Run n copies concurrently. */ +/* -e : Turn on errno logging. */ +/* -i n : Execute test n times. */ +/* -I x : Execute test for x seconds. */ +/* -P x : Pause for x seconds between iterations. */ +/* -t : Turn on syscall timing. */ +/* */ +/* Total Tests: 1 */ +/* */ +/* Test Name: sched_getaffinity01 */ +/* History: Porting from Crackerjack to LTP is done by */ +/* Manas Kumar Nayak [email protected]> */ +/******************************************************************************/ +#include <stdlib.h> +#include <stdio.h> +#include <sys/types.h> +#include <unistd.h> +#define _GNU_SOURCE +#define __USE_GNU +#include <sched.h> +#include <string.h> +#include <errno.h> + +/* Harness Specific Include Files. */ +#include "test.h" +#include "usctest.h" +#include "linux_syscall_numbers.h" + +/* Extern Global Variables */ +extern int Tst_count;/* counter for tst_xxx routines. */ +extern char *TESTDIR ;/* temporary dir created by tst_tmpdir() */ + +/* Global Variables */ +char *TCID ="sched_getaffinity01" ;/* Test program identifier.*/ +int testno; +int TST_TOTAL =1 ;/* total number of tests in this file. */ + +/* Extern Global Functions */ +/******************************************************************************/ +/* */ +/* Function: cleanup */ +/* */ +/* Description: Performs all one time clean up for this test on successful */ +/* completion, premature exit or failure. Closes all temporary */ +/* files, removes all temporary directories exits the test with */ +/* appropriate return code by calling tst_exit() function. */ +/* */ +/* Input: None. */ +/* */ +/* Output: None. */ +/* */ +/* Return: On failure - Exits calling tst_exit(). Non '0' return code. */ +/* On success - Exits calling tst_exit(). With '0' return code. */ +/* */ +/******************************************************************************/ +extern void cleanup () { +/* Remove tmp dir and all files in it */ +TEST_CLEANUP ; +tst_rmdir (); + +/* Exit with appropriate return code. */ +tst_exit (); +} + +/* Local Functions */ +/******************************************************************************/ +/* */ +/* Function: setup */ +/* */ +/* Description: Performs all one time setup for this test. This function is */ +/* typically used to capture signals, create temporary dirs */ +/* and temporary files that may be used in the course of this */ +/* test. */ +/* */ +/* Input: None. */ +/* */ +/* Output: None. */ +/* */ +/* Return: On failure - Exits by calling cleanup(). */ +/* On success - returns 0. */ +/* */ +/******************************************************************************/ +void setup () { +/* Capture signals if any */ +/* Create temporary directories */ +TEST_PAUSE ; +tst_tmpdir (); +} + +int errnochoose (void )// choose the relative errno +{ + switch errno + { +case EFAULT : +perror ("EFAULT" ); +break ; +case EINVAL :perror ("EINVAL" ); +break ; +case EPERM :perror ("EPERM" ); +break ; +case ESRCH :perror ("ESRCH" ); +break ; +default :perror ("other errno" ); +break ; + } +return 0 ; +} + + +int main (int ac,char **av) { +int lc,num,i;/* loop counter */ +char *msg;/* message returned from parse_opts */ +cpu_set_t mask; +unsigned int len =sizeof (cpu_set_t); + + +/* parse standard options */ +if ((msg =parse_opts (ac, av, (option_t *)NULL ,NULL )) != (char *)NULL ){ +tst_brkm (TBROK , cleanup,"OPTION PARSING ERROR - %s" , msg); +tst_exit (); + } + +setup (); + +TEST (num=sysconf (_SC_NPROCESSORS_CONF));//the number of processor(s) +tst_resm (TINFO ,"system has %d processor(s)." , num); + +/* Check looping state if -i option given */ +for (lc =0 ;TEST_LOOPING (lc); ++lc) { + Tst_count =0 ; +for (testno =0 ; testno <TST_TOTAL ; ++testno) { +TEST (sched_getaffinity (0 ,len,(cpu_set_t *)-1 ));//call sched_getaffinity() +if (TEST_RETURN ==-1 ) { +errnochoose (); + } + +TEST (sched_getaffinity (0 ,0 ,&mask));//call sched_getaffinity() +if (TEST_RETURN ==-1 ) { +errnochoose (); + } + +TEST (sched_getaffinity (getpid ()+1 ,len,&mask));//call sched_getaffinity() +if (TEST_RETURN ==-1 ) { +errnochoose (); + } + +CPU_ZERO (&mask);//clear +TEST (sched_getaffinity (0 ,len,&mask));//call sched_getaffinity() +if (TEST_RETURN ==-1 ) { +tst_resm (TFAIL ,"%s failed -could not get cpu affinity errno = %d : %s" ,TCID ,TEST_ERRNO ,strerror (TEST_ERRNO )); +errnochoose (); +cleanup (); +tst_exit (); + }else { +tst_resm (TINFO ,"cpusetsize is %d cpu_set_t mask is %d" ,len,mask); +tst_resm (TINFO ,"mask.__bits[0] = %lu " ,mask.__bits[0 ]); +for (i=0 ;i<num;i++){// check the processor +TEST (CPU_ISSET (i,&mask)); +if (TEST_RETURN !=-1 ){ +tst_resm (TPASS ,"sched_getaffinity() succeed ,this process %d is running processor: %d" ,getpid (), i); + } + } + } + + + } + } +cleanup (); +tst_exit (); +} +runtest/syscalls +2
-1@@ -837,6 +837,8 @@ sched_setscheduler02 sched_setscheduler0 sched_yield01 sched_yield01 +sched_getaffinity01 sched_getaffinity01 + select01 select01 select02 select02 select03 select03 ---
Quoted 3 lines
Regards--
Manas
------------------------------------------------------------------------------
Crystal Reports - New Free Runtime and 30 Day Trial
Check out the new simplified licensing option that enables unlimited royalty-free distribution of the report engine for externally facing server and web deployment.
http://p.sf.net/sfu/businessobjects
_______________________________________________
Ltp-list mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ltp-list
PATCH 3/5 Add/Port waitid01 test for waitid() syscall
In reply to Manas Kumar NayakTo: LTP List <[email protected]>
Cc: Subrata Modak <[email protected]>
Cc: Masatake YAMATO <[email protected]>
---
testcases/kernel/syscalls/waitid/Makefile +31 -0
@@ -0,0 +1,31 @@ +# +# Copyright (c) International Business Machines Corp., 2009 +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See +# the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# + +CFLAGS += -I../../../../include -Wall +LDLIBS += -L../../../../lib -lltp + +SRCS = $(wildcard *.c) +TARGETS = $(patsubst %.c,%,$(SRCS)) + +all: $(TARGETS) + +install: + @set -e; for i in $(TARGETS); do ln -f $$i ../../../bin/$$i ; done + +clean: + rm -f $(TARGETS)
testcases/kernel/syscalls/waitid/waitid01.c +204 -0
204 lines not on this page · raw message
runtest/syscalls +2 -0
@@ -1271,6 +1271,8 @@ waitpid11 waitpid11 waitpid12 waitpid12 waitpid13 waitpid13 +waitid01 waitid01 + write01 write01 write02 write02 write03 write03
---
Regards--
Manas
------------------------------------------------------------------------------
Crystal Reports - New Free Runtime and 30 Day Trial
Check out the new simplified licensing option that enables unlimited royalty-free distribution of the report engine for externally facing server and web deployment.
http://p.sf.net/sfu/businessobjects
_______________________________________________
Ltp-list mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ltp-list
Re: [LTP] [PATCH 03/05] Add/Port waitid01 test for waitid() syscall
Quoted 1 line · Manas Kumar Nayak
Signed-off-by Manas Kumar Nayak <[email protected]>
Thanks.
Regards--
Subrata
Quoted 259 lines
To: LTP List <[email protected]>
Cc: Subrata Modak <[email protected]>
Cc: Masatake YAMATO <[email protected]>
---testcases/kernel/syscalls/waitid/Makefile +31
-0@@ -0,0 +1,31 @@ +# +# Copyright (c) International Business Machines Corp., 2009 +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See +# the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# + +CFLAGS += -I../../../../include -Wall +LDLIBS += -L../../../../lib -lltp + +SRCS = $(wildcard *.c) +TARGETS = $(patsubst %.c,%,$(SRCS)) + +all: $(TARGETS) + +install: + @set -e; for i in $(TARGETS); do ln -f $$i ../../../bin/$$i ; done + +clean: + rm -f $(TARGETS)testcases/kernel/syscalls/waitid/waitid01.c +204
-0@@ -0,0 +1,204 @@ +/******************************************************************************/ +/* Copyright (c) Crackerjack Project., 2007 */ +/* */ +/* This program is free software; you can redistribute it and/or modify */ +/* it under the terms of the GNU General Public License as published by */ +/* the Free Software Foundation; either version 2 of the License, or */ +/* (at your option) any later version. */ +/* */ +/* This program is distributed in the hope that it will be useful, */ +/* but WITHOUT ANY WARRANTY; without even the implied warranty of */ +/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See */ +/* the GNU General Public License for more details. */ +/* */ +/* You should have received a copy of the GNU General Public License */ +/* along with this program; if not, write to the Free Software */ +/* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +/* */ +/******************************************************************************/ +/******************************************************************************/ +/* */ +/* File: waitid01.c */ +/* */ +/* Description: This tests the waitid() syscall */ +/* */ +/* Usage: <for command-line> */ +/* waitid01 [-c n] [-e][-i n] [-I x] [-p x] [-t] */ +/* where, -c n : Run n copies concurrently. */ +/* -e : Turn on errno logging. */ +/* -i n : Execute test n times. */ +/* -I x : Execute test for x seconds. */ +/* -P x : Pause for x seconds between iterations. */ +/* -t : Turn on syscall timing. */ +/* */ +/* Total Tests: 1 */ +/* */ +/* Test Name: waitid01 */ +/* History: Porting from Crackerjack to LTP is done by */ +/* Manas Kumar Nayak [email protected]> */ +/******************************************************************************/ + +#include <stdio.h> +#include <errno.h> +#include <stdlib.h> +#include <sys/wait.h> +#include <sys/types.h> +#include <unistd.h> +#include <sys/stat.h> + +/* Harness Specific Include Files. */ +#include "test.h" +#include "usctest.h" +#include "linux_syscall_numbers.h" + +/* Extern Global Variables */ +extern int Tst_count;/* counter for tst_xxx routines. */ +extern char *TESTDIR ;/* temporary dir created by tst_tmpdir() */ + +/* Global Variables */ +char *TCID ="waitid01" ;/* Test program identifier.*/ +int testno; +int TST_TOTAL =3 ;/* total number of tests in this file. */ + +/* Extern Global Functions */ +/******************************************************************************/ +/* */ +/* Function: cleanup */ +/* */ +/* Description: Performs all one time clean up for this test on successful */ +/* completion, premature exit or failure. Closes all temporary */ +/* files, removes all temporary directories exits the test with */ +/* appropriate return code by calling tst_exit() function. */ +/* */ +/* Input: None. */ +/* */ +/* Output: None. */ +/* */ +/* Return: On failure - Exits calling tst_exit(). Non '0' return code. */ +/* On success - Exits calling tst_exit(). With '0' return code. */ +/* */ +/******************************************************************************/ +extern void cleanup () { +/* Remove tmp dir and all files in it */ +TEST_CLEANUP ; +tst_rmdir (); + +/* Exit with appropriate return code. */ +tst_exit (); +} + +/* Local Functions */ +/******************************************************************************/ +/* */ +/* Function: setup */ +/* */ +/* Description: Performs all one time setup for this test. This function is */ +/* typically used to capture signals, create temporary dirs */ +/* and temporary files that may be used in the course of this */ +/* test. */ +/* */ +/* Input: None. */ +/* */ +/* Output: None. */ +/* */ +/* Return: On failure - Exits by calling cleanup(). */ +/* On success - returns 0. */ +/* */ +/******************************************************************************/ +void setup () { +/* Capture signals if any */ +/* Create temporary directories */ +TEST_PAUSE ; +tst_tmpdir (); +} + + +int errnochoose (void ){//choose the relative errno + +switch (TEST_ERRNO ){ +case 0 :tst_exit (); +case ECHILD :strerror ((int )"ECHILD" ); +break ; +case EINTR :strerror ((int )"EINTR" ); +break ; +case EINVAL :strerror ((int )"EINVAL" ); +break ; +default :strerror ((int )"Other Error" ); +break ; + } +TEST_RETURN =0 ; +tst_exit () ; +} + +void display_status (siginfo_t *infop) +{ +tst_resm (TINFO ,"Process %d terminated:" , infop->si_pid); +tst_resm (TINFO ,"code = %d" ,infop->si_code); +if (infop->si_code ==CLD_EXITED ) +tst_resm (TINFO ,"exit value = %d" ,infop->si_status); +else +tst_resm (TINFO ,"signal = %d" ,infop->si_status); +} + +int main (int ac,char **av) { +id_t pid; +siginfo_t infop; +int lc;/* loop counter */ +char *msg;/* message returned from parse_opts */ + +/* parse standard options */ +if ((msg =parse_opts (ac, av, (option_t *)NULL ,NULL )) != (char *)NULL ){ +tst_brkm (TBROK , cleanup,"OPTION PARSING ERROR - %s" , msg); +tst_exit (); + } + +setup (); + +/* Check looping state if -i option given */ +for (lc =0 ;TEST_LOOPING (lc); ++lc) { + Tst_count =0 ; +for (testno =0 ; testno <TST_TOTAL ; ++testno) { + +TEST (fork ()); +if (TEST_RETURN ==0 ){ +exit (123 ); + } +else { +TEST (waitid (P_ALL ,getpid (),&infop,WEXITED )); +if (TEST_RETURN ==-1 ){ +TEST (errnochoose ()); + }else +display_status (&infop);//CLD_EXITED = 1 + } + +TEST (fork ()); +if (TEST_RETURN ==0 ){ +int a, b =0 ; + a =1 /b; +tst_exit (); + }else { +TEST (waitid (P_ALL ,0 ,&infop,WEXITED )); +if (TEST_RETURN ==-1 ) +TEST (errnochoose ()); +else +display_status (&infop);//CLD_DUMPED = 3 ; SIGFPE = 8 + } + +TEST (pid =fork ()); +if (TEST_RETURN ==0 ){ +TEST (sleep (10 )); +tst_exit (); + } +TEST (kill (pid,SIGHUP )); +TEST (waitid (P_ALL ,0 ,&infop,WEXITED )); +if (TEST_RETURN ==-1 ) +TEST (errnochoose ()); +else +display_status (&infop);//CLD_KILLED = 2 ; SIGHUP = 1 + } + } +tst_resm (TPASS ,"waitid(): system call passed" ); +cleanup (); +tst_exit (); +} +runtest/syscalls +2
-1@@ -1271,6 +1271,8 @@ waitpid11 waitpid11 waitpid12 waitpid12 waitpid13 waitpid13 +waitid01 waitid01 + write01 write01 write02 write02 write03 write03 ---
Quoted 2 lines
Regards--
Manas
------------------------------------------------------------------------------
Crystal Reports - New Free Runtime and 30 Day Trial
Check out the new simplified licensing option that enables unlimited royalty-free distribution of the report engine for externally facing server and web deployment.
http://p.sf.net/sfu/businessobjects
_______________________________________________
Ltp-list mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ltp-list
PATCH 4/5 Add/Port waitid02 test for waitid() syscall
In reply to Manas Kumar NayakTo: LTP List <[email protected]>
Cc: Subrata Modak <[email protected]>
Cc: Masatake YAMATO <[email protected]>
---
testcases/kernel/syscalls/waitid/waitid02.c +222 -0
@@ -0,0 +1,222 @@ +/******************************************************************************/ +/* Copyright (c) Crackerjack Project., 2007 */ +/* */ +/* This program is free software; you can redistribute it and/or modify */ +/* it under the terms of the GNU General Public License as published by */ +/* the Free Software Foundation; either version 2 of the License, or */ +/* (at your option) any later version. */ +/* */ +/* This program is distributed in the hope that it will be useful, */ +/* but WITHOUT ANY WARRANTY; without even the implied warranty of */ +/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See */ +/* the GNU General Public License for more details. */ +/* */ +/* You should have received a copy of the GNU General Public License */ +/* along with this program; if not, write to the Free Software */ +/* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +/* */ +/******************************************************************************/ +/******************************************************************************/ +/* */ +/* File: waitid02.c */ +/* */ +/* Description: This tests the waitid() syscall */ +/* */ +/* Usage: <for command-line> */ +/* waitid02 [-c n] [-e][-i n] [-I x] [-p x] [-t] */ +/* where, -c n : Run n copies concurrently. */ +/* -e : Turn on errno logging. */ +/* -i n : Execute test n times. */ +/* -I x : Execute test for x seconds. */ +/* -P x : Pause for x seconds between iterations. */ +/* -t : Turn on syscall timing. */ +/* */ +/* Total Tests: 1 */ +/* */ +/* Test Name: waitid02 */ +/* History: Porting from Crackerjack to LTP is done by */ +/* Manas Kumar Nayak [email protected]> */ +/******************************************************************************/ + +#include <stdio.h> +#include <errno.h> +#include <stdlib.h> +#include <sys/wait.h> +#include <sys/types.h> +#include <unistd.h> +#include <sys/stat.h> + +/* Harness Specific Include Files. */ +#include "test.h" +#include "usctest.h" +#include "linux_syscall_numbers.h" + +/* Extern Global Variables */ +extern int Tst_count;/* counter for tst_xxx routines. */ +extern char *TESTDIR ;/* temporary dir created by tst_tmpdir() */ + +/* Global Variables */ +char *TCID ="waitid02" ;/* Test program identifier.*/ +int testno; +int TST_TOTAL =7 ;/* total number of tests in this file. */ + +/* Extern Global Functions */ +/******************************************************************************/ +/* */ +/* Function: cleanup */ +/* */ +/* Description: Performs all one time clean up for this test on successful */ +/* completion, premature exit or failure. Closes all temporary */ +/* files, removes all temporary directories exits the test with */ +/* appropriate return code by calling tst_exit() function. */ +/* */ +/* Input: None. */ +/* */ +/* Output: None. */ +/* */ +/* Return: On failure - Exits calling tst_exit(). Non '0' return code. */ +/* On success - Exits calling tst_exit(). With '0' return code. */ +/* */ +/******************************************************************************/ +extern void cleanup () { +/* Remove tmp dir and all files in it */ +TEST_CLEANUP ; +tst_rmdir (); + +/* Exit with appropriate return code. */ +tst_exit (); +} + +/* Local Functions */ +/******************************************************************************/ +/* */ +/* Function: setup */ +/* */ +/* Description: Performs all one time setup for this test. This function is */ +/* typically used to capture signals, create temporary dirs */ +/* and temporary files that may be used in the course of this */ +/* test. */ +/* */ +/* Input: None. */ +/* */ +/* Output: None. */ +/* */ +/* Return: On failure - Exits by calling cleanup(). */ +/* On success - returns 0. */ +/* */ +/******************************************************************************/ +void setup () { +/* Capture signals if any */ +/* Create temporary directories */ +TEST_PAUSE ; +tst_tmpdir (); +} + + +int errnochoose (void ){//choose the relative errno + +switch (TEST_ERRNO ){ +case 0 :tst_exit (); +case ECHILD :strerror ((int )"ECHILD" ); +tst_exit (); +case EINTR :strerror ((int )"EINTR" ); +tst_exit (); +case EINVAL :strerror ((int )"EINVAL" ); +tst_exit (); +default :strerror ((int )"Other Error" ); +tst_exit (); + } +TEST_RETURN =0 ; +//tst_exit() ; +} + + +int main (int ac,char **av) { +id_t cpid; +id_t id1,id2,id3; +id_t gid1,gid2,gid3; +siginfo_t infop; +int i =0 ; + +int lc;/* loop counter */ +char *msg;/* message returned from parse_opts */ + +/* parse standard options */ +if ((msg =parse_opts (ac, av, (option_t *)NULL ,NULL )) != (char *)NULL ){ +tst_brkm (TBROK , cleanup,"OPTION PARSING ERROR - %s" , msg); +tst_exit (); + } + +setup (); + +/* Check looping state if -i option given */ + +for (lc =0 ;TEST_LOOPING (lc); ++lc) { + Tst_count =0 ; +for (testno =0 ; testno <TST_TOTAL ; ++testno) { + + +TEST (waitid (P_ALL ,0 ,&infop,WNOHANG )); +if (TEST_RETURN ==0 ) +tst_resm (TPASS ,"Success !" ); +else { +tst_resm (TFAIL ,"Error. is your system >2.6.9 ?" ); +errnochoose (); + } + +// option == WEXITED | WCONTINUED | WSTOPPED | WNOHANG | WNOWAIT ; + +TEST (fork ()); +if (TEST_RETURN ==0 ){ +tst_resm (TINFO ,"I'm a child,my id is %d,gpid is %d" ,id1=getpid (),gid1=getpgid (0 )); +exit (5 ); + } + +TEST (fork ()); +if (TEST_RETURN ==0 ){ +tst_resm (TINFO ,"I'm a child,my id is %d,gpid is %d" ,id2=getpid (),gid2=getpgid (0 )); +exit (7 ); + } + +TEST (fork ()); +if (TEST_RETURN ==0 ){ +tst_resm (TINFO ,"I'm a child,my id is %d,gpid is %d" ,id3=getpid (),gid3=getpgid (0 )); +exit (6 ); + } + +tst_resm (TINFO ,"I'm a father %d" ,cpid=getpid ()); + +TEST (waitid (P_PGID ,cpid,&infop,WEXITED )); +if (TEST_RETURN ==0 ){ +tst_resm (TPASS ,"Success ... 0 is returned." ); +tst_resm (TINFO ,"si_pid = %d ; si_code = %d ; si_status = %d" ,infop.si_pid,infop.si_code,infop.si_status); + }else { +tst_resm (TFAIL ,"Fail... %d is returned" ,TEST_RETURN ); +errnochoose (); + } + +TEST (waitid (P_PGID ,id2,&infop,WEXITED )); +if (TEST_RETURN ==0 ){//NOCHILD +tst_resm (TINFO ,"si_pid = %d ; si_code = %d ; si_status = %d" ,infop.si_pid,infop.si_code,infop.si_status); +tst_resm (TPASS ,"Success2 ... 0 is returned" ); + }else { +tst_resm (TFAIL ,"Fail... %d is returned" ,TEST_RETURN ); +errnochoose (); + } + +TEST (i =waitid (P_PID ,id1,&infop,WCONTINUED )); +if (TEST_RETURN ==0 ){//EINVAL +tst_resm (TINFO ,"si_pid = %d ; si_code = %d ; si_status = %d" ,infop.si_pid,infop.si_code,infop.si_status); +tst_resm (TPASS ,"Success3 ... 0 is returned" ); + }else { +tst_resm (TFAIL ,"Fail... %d is returned" ,i); +errnochoose (); + } + } + } +cleanup (); +tst_exit (); +} + + +
runtest/syscalls +1 -0
@@ -1272,6 +1272,7 @@ waitpid12 waitpid12 waitpid13 waitpid13 waitid01 waitid01 +waitid02 waitid02 write01 write01 write02 write02
---
Regards--
Manas
------------------------------------------------------------------------------
Crystal Reports - New Free Runtime and 30 Day Trial
Check out the new simplified licensing option that enables unlimited royalty-free distribution of the report engine for externally facing server and web deployment.
http://p.sf.net/sfu/businessobjects
_______________________________________________
Ltp-list mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ltp-list
Re: [LTP] [PATCH 04/05] Add/Port waitid02 test for waitid() syscall
Quoted 1 line · Manas Kumar Nayak
Signed-off-by Manas Kumar Nayak <[email protected]>
Thanks.
Regards--
Subrata
Quoted 242 lines
To: LTP List <[email protected]>
Cc: Subrata Modak <[email protected]>
Cc: Masatake YAMATO <[email protected]>
---testcases/kernel/syscalls/waitid/waitid02.c +222
-0@@ -0,0 +1,222 @@ +/******************************************************************************/ +/* Copyright (c) Crackerjack Project., 2007 */ +/* */ +/* This program is free software; you can redistribute it and/or modify */ +/* it under the terms of the GNU General Public License as published by */ +/* the Free Software Foundation; either version 2 of the License, or */ +/* (at your option) any later version. */ +/* */ +/* This program is distributed in the hope that it will be useful, */ +/* but WITHOUT ANY WARRANTY; without even the implied warranty of */ +/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See */ +/* the GNU General Public License for more details. */ +/* */ +/* You should have received a copy of the GNU General Public License */ +/* along with this program; if not, write to the Free Software */ +/* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +/* */ +/******************************************************************************/ +/******************************************************************************/ +/* */ +/* File: waitid02.c */ +/* */ +/* Description: This tests the waitid() syscall */ +/* */ +/* Usage: <for command-line> */ +/* waitid02 [-c n] [-e][-i n] [-I x] [-p x] [-t] */ +/* where, -c n : Run n copies concurrently. */ +/* -e : Turn on errno logging. */ +/* -i n : Execute test n times. */ +/* -I x : Execute test for x seconds. */ +/* -P x : Pause for x seconds between iterations. */ +/* -t : Turn on syscall timing. */ +/* */ +/* Total Tests: 1 */ +/* */ +/* Test Name: waitid02 */ +/* History: Porting from Crackerjack to LTP is done by */ +/* Manas Kumar Nayak [email protected]> */ +/******************************************************************************/ + +#include <stdio.h> +#include <errno.h> +#include <stdlib.h> +#include <sys/wait.h> +#include <sys/types.h> +#include <unistd.h> +#include <sys/stat.h> + +/* Harness Specific Include Files. */ +#include "test.h" +#include "usctest.h" +#include "linux_syscall_numbers.h" + +/* Extern Global Variables */ +extern int Tst_count;/* counter for tst_xxx routines. */ +extern char *TESTDIR ;/* temporary dir created by tst_tmpdir() */ + +/* Global Variables */ +char *TCID ="waitid02" ;/* Test program identifier.*/ +int testno; +int TST_TOTAL =7 ;/* total number of tests in this file. */ + +/* Extern Global Functions */ +/******************************************************************************/ +/* */ +/* Function: cleanup */ +/* */ +/* Description: Performs all one time clean up for this test on successful */ +/* completion, premature exit or failure. Closes all temporary */ +/* files, removes all temporary directories exits the test with */ +/* appropriate return code by calling tst_exit() function. */ +/* */ +/* Input: None. */ +/* */ +/* Output: None. */ +/* */ +/* Return: On failure - Exits calling tst_exit(). Non '0' return code. */ +/* On success - Exits calling tst_exit(). With '0' return code. */ +/* */ +/******************************************************************************/ +extern void cleanup () { +/* Remove tmp dir and all files in it */ +TEST_CLEANUP ; +tst_rmdir (); + +/* Exit with appropriate return code. */ +tst_exit (); +} + +/* Local Functions */ +/******************************************************************************/ +/* */ +/* Function: setup */ +/* */ +/* Description: Performs all one time setup for this test. This function is */ +/* typically used to capture signals, create temporary dirs */ +/* and temporary files that may be used in the course of this */ +/* test. */ +/* */ +/* Input: None. */ +/* */ +/* Output: None. */ +/* */ +/* Return: On failure - Exits by calling cleanup(). */ +/* On success - returns 0. */ +/* */ +/******************************************************************************/ +void setup () { +/* Capture signals if any */ +/* Create temporary directories */ +TEST_PAUSE ; +tst_tmpdir (); +} + + +int errnochoose (void ){//choose the relative errno + +switch (TEST_ERRNO ){ +case 0 :tst_exit (); +case ECHILD :strerror ((int )"ECHILD" ); +tst_exit (); +case EINTR :strerror ((int )"EINTR" ); +tst_exit (); +case EINVAL :strerror ((int )"EINVAL" ); +tst_exit (); +default :strerror ((int )"Other Error" ); +tst_exit (); + } +TEST_RETURN =0 ; +//tst_exit() ; +} + + +int main (int ac,char **av) { +id_t cpid; +id_t id1,id2,id3; +id_t gid1,gid2,gid3; +siginfo_t infop; +int i =0 ; + +int lc;/* loop counter */ +char *msg;/* message returned from parse_opts */ + +/* parse standard options */ +if ((msg =parse_opts (ac, av, (option_t *)NULL ,NULL )) != (char *)NULL ){ +tst_brkm (TBROK , cleanup,"OPTION PARSING ERROR - %s" , msg); +tst_exit (); + } + +setup (); + +/* Check looping state if -i option given */ + +for (lc =0 ;TEST_LOOPING (lc); ++lc) { + Tst_count =0 ; +for (testno =0 ; testno <TST_TOTAL ; ++testno) { + + +TEST (waitid (P_ALL ,0 ,&infop,WNOHANG )); +if (TEST_RETURN ==0 ) +tst_resm (TPASS ,"Success !" ); +else { +tst_resm (TFAIL ,"Error. is your system >2.6.9 ?" ); +errnochoose (); + } + +// option == WEXITED | WCONTINUED | WSTOPPED | WNOHANG | WNOWAIT ; + +TEST (fork ()); +if (TEST_RETURN ==0 ){ +tst_resm (TINFO ,"I'm a child,my id is %d,gpid is %d" ,id1=getpid (),gid1=getpgid (0 )); +exit (5 ); + } + +TEST (fork ()); +if (TEST_RETURN ==0 ){ +tst_resm (TINFO ,"I'm a child,my id is %d,gpid is %d" ,id2=getpid (),gid2=getpgid (0 )); +exit (7 ); + } + +TEST (fork ()); +if (TEST_RETURN ==0 ){ +tst_resm (TINFO ,"I'm a child,my id is %d,gpid is %d" ,id3=getpid (),gid3=getpgid (0 )); +exit (6 ); + } + +tst_resm (TINFO ,"I'm a father %d" ,cpid=getpid ()); + +TEST (waitid (P_PGID ,cpid,&infop,WEXITED )); +if (TEST_RETURN ==0 ){ +tst_resm (TPASS ,"Success ... 0 is returned." ); +tst_resm (TINFO ,"si_pid = %d ; si_code = %d ; si_status = %d" ,infop.si_pid,infop.si_code,infop.si_status); + }else { +tst_resm (TFAIL ,"Fail... %d is returned" ,TEST_RETURN ); +errnochoose (); + } + +TEST (waitid (P_PGID ,id2,&infop,WEXITED )); +if (TEST_RETURN ==0 ){//NOCHILD +tst_resm (TINFO ,"si_pid = %d ; si_code = %d ; si_status = %d" ,infop.si_pid,infop.si_code,infop.si_status); +tst_resm (TPASS ,"Success2 ... 0 is returned" ); + }else { +tst_resm (TFAIL ,"Fail... %d is returned" ,TEST_RETURN ); +errnochoose (); + } + +TEST (i =waitid (P_PID ,id1,&infop,WCONTINUED )); +if (TEST_RETURN ==0 ){//EINVAL +tst_resm (TINFO ,"si_pid = %d ; si_code = %d ; si_status = %d" ,infop.si_pid,infop.si_code,infop.si_status); +tst_resm (TPASS ,"Success3 ... 0 is returned" ); + }else { +tst_resm (TFAIL ,"Fail... %d is returned" ,i); +errnochoose (); + } + } + } +cleanup (); +tst_exit (); +} + + +runtest/syscalls +1
-1@@ -1272,6 +1272,7 @@ waitpid12 waitpid12 waitpid13 waitpid13 waitid01 waitid01 +waitid02 waitid02 write01 write01 write02 write02 ---
Quoted 3 lines
Regards--
Manas
------------------------------------------------------------------------------
Crystal Reports - New Free Runtime and 30 Day Trial
Check out the new simplified licensing option that enables unlimited royalty-free distribution of the report engine for externally facing server and web deployment.
http://p.sf.net/sfu/businessobjects
_______________________________________________
Ltp-list mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ltp-list
Re: [LTP] [PATCH 04/05] Add/Port waitid02 test for waitid() syscall
In reply to Manas Kumar NayakQuoted 1 line · Manas Kumar Nayak
Signed-off-by Manas Kumar Nayak <[email protected]>
Thanks.
Regards--
Subrata
Quoted 242 lines
To: LTP List <[email protected]>
Cc: Subrata Modak <[email protected]>
Cc: Masatake YAMATO <[email protected]>
---testcases/kernel/syscalls/waitid/waitid02.c +222
-0@@ -0,0 +1,222 @@ +/******************************************************************************/ +/* Copyright (c) Crackerjack Project., 2007 */ +/* */ +/* This program is free software; you can redistribute it and/or modify */ +/* it under the terms of the GNU General Public License as published by */ +/* the Free Software Foundation; either version 2 of the License, or */ +/* (at your option) any later version. */ +/* */ +/* This program is distributed in the hope that it will be useful, */ +/* but WITHOUT ANY WARRANTY; without even the implied warranty of */ +/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See */ +/* the GNU General Public License for more details. */ +/* */ +/* You should have received a copy of the GNU General Public License */ +/* along with this program; if not, write to the Free Software */ +/* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +/* */ +/******************************************************************************/ +/******************************************************************************/ +/* */ +/* File: waitid02.c */ +/* */ +/* Description: This tests the waitid() syscall */ +/* */ +/* Usage: <for command-line> */ +/* waitid02 [-c n] [-e][-i n] [-I x] [-p x] [-t] */ +/* where, -c n : Run n copies concurrently. */ +/* -e : Turn on errno logging. */ +/* -i n : Execute test n times. */ +/* -I x : Execute test for x seconds. */ +/* -P x : Pause for x seconds between iterations. */ +/* -t : Turn on syscall timing. */ +/* */ +/* Total Tests: 1 */ +/* */ +/* Test Name: waitid02 */ +/* History: Porting from Crackerjack to LTP is done by */ +/* Manas Kumar Nayak [email protected]> */ +/******************************************************************************/ + +#include <stdio.h> +#include <errno.h> +#include <stdlib.h> +#include <sys/wait.h> +#include <sys/types.h> +#include <unistd.h> +#include <sys/stat.h> + +/* Harness Specific Include Files. */ +#include "test.h" +#include "usctest.h" +#include "linux_syscall_numbers.h" + +/* Extern Global Variables */ +extern int Tst_count;/* counter for tst_xxx routines. */ +extern char *TESTDIR ;/* temporary dir created by tst_tmpdir() */ + +/* Global Variables */ +char *TCID ="waitid02" ;/* Test program identifier.*/ +int testno; +int TST_TOTAL =7 ;/* total number of tests in this file. */ + +/* Extern Global Functions */ +/******************************************************************************/ +/* */ +/* Function: cleanup */ +/* */ +/* Description: Performs all one time clean up for this test on successful */ +/* completion, premature exit or failure. Closes all temporary */ +/* files, removes all temporary directories exits the test with */ +/* appropriate return code by calling tst_exit() function. */ +/* */ +/* Input: None. */ +/* */ +/* Output: None. */ +/* */ +/* Return: On failure - Exits calling tst_exit(). Non '0' return code. */ +/* On success - Exits calling tst_exit(). With '0' return code. */ +/* */ +/******************************************************************************/ +extern void cleanup () { +/* Remove tmp dir and all files in it */ +TEST_CLEANUP ; +tst_rmdir (); + +/* Exit with appropriate return code. */ +tst_exit (); +} + +/* Local Functions */ +/******************************************************************************/ +/* */ +/* Function: setup */ +/* */ +/* Description: Performs all one time setup for this test. This function is */ +/* typically used to capture signals, create temporary dirs */ +/* and temporary files that may be used in the course of this */ +/* test. */ +/* */ +/* Input: None. */ +/* */ +/* Output: None. */ +/* */ +/* Return: On failure - Exits by calling cleanup(). */ +/* On success - returns 0. */ +/* */ +/******************************************************************************/ +void setup () { +/* Capture signals if any */ +/* Create temporary directories */ +TEST_PAUSE ; +tst_tmpdir (); +} + + +int errnochoose (void ){//choose the relative errno + +switch (TEST_ERRNO ){ +case 0 :tst_exit (); +case ECHILD :strerror ((int )"ECHILD" ); +tst_exit (); +case EINTR :strerror ((int )"EINTR" ); +tst_exit (); +case EINVAL :strerror ((int )"EINVAL" ); +tst_exit (); +default :strerror ((int )"Other Error" ); +tst_exit (); + } +TEST_RETURN =0 ; +//tst_exit() ; +} + + +int main (int ac,char **av) { +id_t cpid; +id_t id1,id2,id3; +id_t gid1,gid2,gid3; +siginfo_t infop; +int i =0 ; + +int lc;/* loop counter */ +char *msg;/* message returned from parse_opts */ + +/* parse standard options */ +if ((msg =parse_opts (ac, av, (option_t *)NULL ,NULL )) != (char *)NULL ){ +tst_brkm (TBROK , cleanup,"OPTION PARSING ERROR - %s" , msg); +tst_exit (); + } + +setup (); + +/* Check looping state if -i option given */ + +for (lc =0 ;TEST_LOOPING (lc); ++lc) { + Tst_count =0 ; +for (testno =0 ; testno <TST_TOTAL ; ++testno) { + + +TEST (waitid (P_ALL ,0 ,&infop,WNOHANG )); +if (TEST_RETURN ==0 ) +tst_resm (TPASS ,"Success !" ); +else { +tst_resm (TFAIL ,"Error. is your system >2.6.9 ?" ); +errnochoose (); + } + +// option == WEXITED | WCONTINUED | WSTOPPED | WNOHANG | WNOWAIT ; + +TEST (fork ()); +if (TEST_RETURN ==0 ){ +tst_resm (TINFO ,"I'm a child,my id is %d,gpid is %d" ,id1=getpid (),gid1=getpgid (0 )); +exit (5 ); + } + +TEST (fork ()); +if (TEST_RETURN ==0 ){ +tst_resm (TINFO ,"I'm a child,my id is %d,gpid is %d" ,id2=getpid (),gid2=getpgid (0 )); +exit (7 ); + } + +TEST (fork ()); +if (TEST_RETURN ==0 ){ +tst_resm (TINFO ,"I'm a child,my id is %d,gpid is %d" ,id3=getpid (),gid3=getpgid (0 )); +exit (6 ); + } + +tst_resm (TINFO ,"I'm a father %d" ,cpid=getpid ()); + +TEST (waitid (P_PGID ,cpid,&infop,WEXITED )); +if (TEST_RETURN ==0 ){ +tst_resm (TPASS ,"Success ... 0 is returned." ); +tst_resm (TINFO ,"si_pid = %d ; si_code = %d ; si_status = %d" ,infop.si_pid,infop.si_code,infop.si_status); + }else { +tst_resm (TFAIL ,"Fail... %d is returned" ,TEST_RETURN ); +errnochoose (); + } + +TEST (waitid (P_PGID ,id2,&infop,WEXITED )); +if (TEST_RETURN ==0 ){//NOCHILD +tst_resm (TINFO ,"si_pid = %d ; si_code = %d ; si_status = %d" ,infop.si_pid,infop.si_code,infop.si_status); +tst_resm (TPASS ,"Success2 ... 0 is returned" ); + }else { +tst_resm (TFAIL ,"Fail... %d is returned" ,TEST_RETURN ); +errnochoose (); + } + +TEST (i =waitid (P_PID ,id1,&infop,WCONTINUED )); +if (TEST_RETURN ==0 ){//EINVAL +tst_resm (TINFO ,"si_pid = %d ; si_code = %d ; si_status = %d" ,infop.si_pid,infop.si_code,infop.si_status); +tst_resm (TPASS ,"Success3 ... 0 is returned" ); + }else { +tst_resm (TFAIL ,"Fail... %d is returned" ,i); +errnochoose (); + } + } + } +cleanup (); +tst_exit (); +} + + +runtest/syscalls +1
-1@@ -1272,6 +1272,7 @@ waitpid12 waitpid12 waitpid13 waitpid13 waitid01 waitid01 +waitid02 waitid02 write01 write01 write02 write02 ---
Quoted 3 lines
Regards--
Manas
------------------------------------------------------------------------------
Crystal Reports - New Free Runtime and 30 Day Trial
Check out the new simplified licensing option that enables unlimited royalty-free distribution of the report engine for externally facing server and web deployment.
http://p.sf.net/sfu/businessobjects
_______________________________________________
Ltp-list mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ltp-list
PATCH 5/5 Add/Port quotactl01 test for quotactl() syscall
In reply to Manas Kumar NayakTo: LTP List <[email protected]>
Cc: Subrata Modak <[email protected]>
Cc: Masatake YAMATO <[email protected]>
---
testcases/kernel/syscalls/quotactl/Makefile +31 -0
@@ -0,0 +1,31 @@ +# +# Copyright (c) International Business Machines Corp., 2009 +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See +# the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# + +CFLAGS += -I../../../../include -Wall +LDLIBS += -L../../../../lib -lltp + +SRCS = $(wildcard *.c) +TARGETS = $(patsubst %.c,%,$(SRCS)) + +all: $(TARGETS) + +install: + @set -e; for i in $(TARGETS); do ln -f $$i ../../../bin/$$i ; done + +clean: + rm -f $(TARGETS)
testcases/kernel/syscalls/quotactl/quotactl01.c +168 -0
168 lines not on this page · raw message
runtest/syscalls +1 -0
@@ -742,6 +742,7 @@ pwrite02 pwrite02 pwrite03 pwrite03 pwrite04 pwrite04 +quotactl01 quotactl01 read01 read01 read02 read02
---
Regards--
Manas
------------------------------------------------------------------------------
Crystal Reports - New Free Runtime and 30 Day Trial
Check out the new simplified licensing option that enables unlimited royalty-free distribution of the report engine for externally facing server and web deployment.
http://p.sf.net/sfu/businessobjects
_______________________________________________
Ltp-list mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ltp-list
Re: [LTP] [PATCH 05/05] Add/Port quotactl01 test for quotactl() syscall
Quoted 1 line · Manas Kumar Nayak
Signed-off-by Manas Kumar Nayak <[email protected]>
Thanks.
Regards--
Subrata
Quoted 222 lines
To: LTP List <[email protected]>
Cc: Subrata Modak <[email protected]>
Cc: Masatake YAMATO <[email protected]>
---testcases/kernel/syscalls/quotactl/Makefile +31
-0@@ -0,0 +1,31 @@ +# +# Copyright (c) International Business Machines Corp., 2009 +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See +# the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# + +CFLAGS += -I../../../../include -Wall +LDLIBS += -L../../../../lib -lltp + +SRCS = $(wildcard *.c) +TARGETS = $(patsubst %.c,%,$(SRCS)) + +all: $(TARGETS) + +install: + @set -e; for i in $(TARGETS); do ln -f $$i ../../../bin/$$i ; done + +clean: + rm -f $(TARGETS)testcases/kernel/syscalls/quotactl/quotactl01.c +168
-0@@ -0,0 +1,168 @@ +/******************************************************************************/ +/* Copyright (c) Crackerjack Project., 2007 */ +/* */ +/* This program is free software; you can redistribute it and/or modify */ +/* it under the terms of the GNU General Public License as published by */ +/* the Free Software Foundation; either version 2 of the License, or */ +/* (at your option) any later version. */ +/* */ +/* This program is distributed in the hope that it will be useful, */ +/* but WITHOUT ANY WARRANTY; without even the implied warranty of */ +/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See */ +/* the GNU General Public License for more details. */ +/* */ +/* You should have received a copy of the GNU General Public License */ +/* along with this program; if not, write to the Free Software */ +/* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +/* */ +/******************************************************************************/ +/******************************************************************************/ +/* */ +/* File: quotactl01.c */ +/* */ +/* Description: This tests the quotactl() syscall */ +/* */ +/* Usage: <for command-line> */ +/* quotactl01 [-c n] [-e][-i n] [-I x] [-p x] [-t] */ +/* where, -c n : Run n copies concurrently. */ +/* -e : Turn on errno logging. */ +/* -i n : Execute test n times. */ +/* -I x : Execute test for x seconds. */ +/* -P x : Pause for x seconds between iterations. */ +/* -t : Turn on syscall timing. */ +/* */ +/* Total Tests: 1 */ +/* */ +/* Test Name: quotactl01 */ +/* History: Porting from Crackerjack to LTP is done by */ +/* Manas Kumar Nayak [email protected]> */ +/******************************************************************************/ +#include <fcntl.h> +#include <unistd.h> +#include <sys/syscall.h> +#include <stdio.h> +#include <errno.h> +#include <linux/fs.h> +#include <sys/quota.h> +#include <sys/types.h> + + +/* Harness Specific Include Files. */ +#include "test.h" +#include "usctest.h" +#include "linux_syscall_numbers.h" + +/* Extern Global Variables */ +extern int Tst_count;/* counter for tst_xxx routines. */ +extern char *TESTDIR ;/* temporary dir created by tst_tmpdir() */ + +/* Global Variables */ +char *TCID ="quotactl01" ;/* Test program identifier.*/ +int testno; +int TST_TOTAL =1 ;/* total number of tests in this file. */ + +/* Extern Global Functions */ +/******************************************************************************/ +/* */ +/* Function: cleanup */ +/* */ +/* Description: Performs all one time clean up for this test on successful */ +/* completion, premature exit or failure. Closes all temporary */ +/* files, removes all temporary directories exits the test with */ +/* appropriate return code by calling tst_exit() function. */ +/* */ +/* Input: None. */ +/* */ +/* Output: None. */ +/* */ +/* Return: On failure - Exits calling tst_exit(). Non '0' return code. */ +/* On success - Exits calling tst_exit(). With '0' return code. */ +/* */ +/******************************************************************************/ +extern void cleanup () { +/* Remove tmp dir and all files in it */ +TEST_CLEANUP ; +tst_rmdir (); + +/* Exit with appropriate return code. */ +tst_exit (); +} + +/* Local Functions */ +/******************************************************************************/ +/* */ +/* Function: setup */ +/* */ +/* Description: Performs all one time setup for this test. This function is */ +/* typically used to capture signals, create temporary dirs */ +/* and temporary files that may be used in the course of this */ +/* test. */ +/* */ +/* Input: None. */ +/* */ +/* Output: None. */ +/* */ +/* Return: On failure - Exits by calling cleanup(). */ +/* On success - returns 0. */ +/* */ +/******************************************************************************/ +void setup () { +/* Capture signals if any */ +/* Create temporary directories */ +TEST_PAUSE ; +tst_tmpdir (); +} + +/* +* WARNING!! This test may cause the potential harm to the system, we DO NOT +* provide any warranty for the safety!! +*/ +/* +* To use this testcase , the quota function must be turned on and the user must be * the super user +*/ + +int cmd[] = {Q_QUOTAON ,Q_QUOTAOFF ,Q_GETQUOTA ,Q_SETQUOTA ,Q_GETINFO ,Q_SETINFO ,Q_GETFMT ,Q_SYNC }; +int retval =0 , id =0 , i =0 ; + +int main (int ac,char **av) { +int newtid =-1 ; +int result; +int lc;/* loop counter */ +char *msg;/* message returned from parse_opts */ + +/* parse standard options */ +if ((msg =parse_opts (ac, av, (option_t *)NULL ,NULL )) != (char *)NULL ){ +tst_brkm (TBROK , cleanup,"OPTION PARSING ERROR - %s" , msg); +tst_exit (); + } + +setup (); + +/* Check looping state if -i option given */ +for (lc =0 ;TEST_LOOPING (lc); ++lc) { + Tst_count =0 ; +for (testno =0 ; testno <TST_TOTAL ; ++testno) { + + id =getuid (); +for (i =0 ; i <=7 ; i++){ +TEST (retval =syscall (__NR_quotactl, cmd[i], (const char *)NULL , id, (caddr_t )NULL )); +if (TEST_RETURN !=0 ){ +tst_resm (TFAIL ,"%s failed - errno = %d : %s ...cmderror=%s" ,TCID ,TEST_ERRNO ,strerror (TEST_ERRNO ),cmd[i]); + }else { +tst_resm (TPASS ,"quotactl call succeeded" ); + } + } +TEST (result =syscall (258 , &newtid));//call quotactl() +if (TEST_RETURN ==getpid ()) { +cleanup (); + } +else { +cleanup (); +tst_exit (); + } + } + } +cleanup (); +tst_exit (); +} +runtest/syscalls +1
-1@@ -742,6 +742,7 @@ pwrite02 pwrite02 pwrite03 pwrite03 pwrite04 pwrite04 +quotactl01 quotactl01 read01 read01 read02 read02 ---
Quoted 3 lines
Regards--
Manas
------------------------------------------------------------------------------
Crystal Reports - New Free Runtime and 30 Day Trial
Check out the new simplified licensing option that enables unlimited royalty-free distribution of the report engine for externally facing server and web deployment.
http://p.sf.net/sfu/businessobjects
_______________________________________________
Ltp-list mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ltp-list
Quoted 4 lines · Manas Kumar Nayak
Hi,
As promised earlier, here lies the final bunch of test cases from Crackerjack. I would however keep contributing new tests to LTP.
Great.
Regards--
Subrata
Quoted 62 lines
Quoted 52 lines · Manas Kumar Nayak
Hi,
Quoted 28 lines · Manas Kumar Nayak
Hi,
I have ported the following tests from Crackerjack to LTP. Kindly include them to LTP:
[PATCH 01/21] Add
add_key01test foradd_keysyscall
[PATCH 02/21] Addadd_key02test foradd_keysyscall
[PATCH 03/21] Add bdflush01 test for bdflush syscall
[PATCH 04/21] Addexit_group01test forexit_groupsyscall [PATCH 05/21] Add keyctl01 test for keyctl syscall
[PATCH 06/21] Add newuname01 test for newuname syscall [PATCH 07/21] Addrt_sigaction01test forrt_sigactionsyscall [PATCH 08/21] Addrt_sigprocmask01test forrt_sigprocmasksyscall [PATCH 09/21] Addrt_sigprocmask02test forrt_sigprocmasksyscall [PATCH 10/21] Addrt_sigqueueinfo01test forrt_sigqueueinfosyscall [PATCH 11/21] Addrt_sigsuspend01test forrt_sigsuspendsyscall [PATCH 12/21] Addset_thread_area01test forset_thread_areasyscall [PATCH 13/21] Addset_thread_area02test forset_thread_areasyscall [PATCH 14/21] Addset_tid_address01test forset_tid_addresssyscall [PATCH 15/21] Add sgetmask01 test for sgetmask syscall [PATCH 16/21] Add sigreturn01 test for sigreturn syscall [PATCH 17/21] Add ssetmask01 test for ssetmask syscall [PATCH 18/21] Addtimer_getoverrun01test fortimer_getoverrun01syscall [PATCH 19/21] Addtimer_gettime01test fortimer_gettimesyscall [PATCH 20/21] Add tkill01 test for tkill syscall
[PATCH 21/21] Add tkill02 test for tkill syscallQuoted 2 lines
Todo:
1) Port the Remaining ones (next week),As promised earlier, here remains the 2nd Bunch of tests ported from Crackerjack to LTP:
__001_Add_Utility_Headers_for_these_set_of_tests.patch __002_Add_get_mempolicy01_test_for_get_mempolicy_syscall.patch __003_Add_clock_getres01_test_for_clock_getres_syscall.patch __004_Add_clock_nanosleep01_test_for_clock_nanosleep_syscall.patch __005_Add_mq_notify01_test_for_mq_notify_syscall.patch __006_Add_ppoll01_test_for_ppoll_syscall.patch __007_Add_mq_open01_test_for_mq_open_syscall.patch __008_Add_mq_timedreceive01_test_for_mq_timedreceive_syscall.patch __009_Add_utimes01_test_for_utimes_syscall.patch __010_Add_mq_unlink01_test_for_mq_unlink_syscall.patch __011_Add_mq_timedsend01_test_for_mq_timedsend_syscall.patch __012_Add_unshare01_test_for_unshare_syscall.patch __013_Add_unshare02_test_for_unshare_syscall.patch
Quoted 2 lines
Still TODO:
-> The remaining testcases will be ported soon.[PATCH 00/05] [3rd Bunch] Port Crackerjack Syscall tests(missing) to LTP [PATCH 01/05] Add/Port mbind01 test for
mbind()syscall
[PATCH 02/05] Add/Portsched_getaffinity01test forsched_getaffinity()syscall [PATCH 03/05] Add/Port waitid01 test forwaitid()syscall
[PATCH 04/05] Add/Port waitid02 test forwaitid()syscall
[PATCH 05/05] Add/Port quotactl01 test forquotactl()syscall
Quoted 11 lines
Regards--
ManasQuoted 8 lines
Regards--
ManasQuoted 4 lines
Regards--
Manas
------------------------------------------------------------------------------
Crystal Reports - New Free Runtime and 30 Day Trial
Check out the new simplified licensing option that enables unlimited royalty-free distribution of the report engine for externally facing server and web deployment.
http://p.sf.net/sfu/businessobjects
_______________________________________________
Ltp-list mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ltp-list