All of lore.kernel.org
 help / color / mirror / Atom feed
* [LTP]  [PATCH 1/2]semctl/semctl01.c: cleanup
@ 2013-05-09  8:42 DAN LI
  2013-05-09  8:46 ` [LTP] [PATCH 2/2]semctl/semctl01.c: Test features IPC_INFO, SEM_INFO and SEM_STAT DAN LI
  2013-05-09 16:22 ` [LTP] [PATCH 1/2]semctl/semctl01.c: cleanup Mike Frysinger
  0 siblings, 2 replies; 10+ messages in thread
From: DAN LI @ 2013-05-09  8:42 UTC (permalink / raw)
  To: LTP list

1. Remove useless comments

2. Revise code to follow ltp-code-style

Signed-off-by: DAN LI <li.dan@cn.fujitsu.com>
---
 testcases/kernel/syscalls/ipc/semctl/semctl01.c | 311 +++++++++---------------
 1 file changed, 117 insertions(+), 194 deletions(-)

diff --git a/testcases/kernel/syscalls/ipc/semctl/semctl01.c b/testcases/kernel/syscalls/ipc/semctl/semctl01.c
index c8957c8..93d7cd7 100644
--- a/testcases/kernel/syscalls/ipc/semctl/semctl01.c
+++ b/testcases/kernel/syscalls/ipc/semctl/semctl01.c
@@ -1,20 +1,19 @@
 /*
+ * Copyright (c) International Business Machines  Corp., 2001
  *
- *   Copyright (c) International Business Machines  Corp., 2001
+ * 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 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.
  *
- *   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 Street, Fifth Floor, Boston, MA 02110-1301 USA
+ * 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 Street, Fifth Floor, Boston, MA 02110-1301 USA
  */

 /*
@@ -24,32 +23,6 @@
  * DESCRIPTION
  *	semctl01 - test the 10 possible semctl() commands
  *
- * ALGORITHM
- *	create a semaphore set with read and alter permissions
- *	loop if that option was specified
- *	  loop through the test cases
- *	    do any setup required for the test case
- *	    make the semctl() call using the TEST() macro
- *	    check the return code
- *	      if failure, issue a FAIL message.
- *	    otherwise,
- *	      if doing functionality testing
- *		call the appropriate test function
- *	  	if correct,
- *			issue a PASS message
- *		otherwise
- *			issue a FAIL message
- *	call cleanup
- *
- * USAGE:  <for command-line>
- *  semctl01 [-c n] [-f] [-i n] [-I x] [-P x] [-t]
- *     where,  -c n : Run n copies concurrently.
- *             -f   : Turn off functionality Testing.
- *	       -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.
- *
  * HISTORY
  *	03/2001 - Written by Wayne Boyer
  *
@@ -57,9 +30,6 @@
  *      - Fix concurrency issue. Due to the use of usleep function to
  *        synchronize processes, synchronization issues can occur on a loaded
  *        system. Fix this by using pipes to synchronize processes.
- *
- * RESTRICTIONS
- *	none
  */

 #include "ipcsem.h"
@@ -68,35 +38,35 @@
 char *TCID = "semctl01";
 int TST_TOTAL = 10;

-int sem_id_1 = -1;		/* a semaphore set with read and alter permissions */
+static int sem_id_1 = -1;

-int sync_pipes[2];
+static int sync_pipes[2];

 /*
  * These are the various setup and check functions for the 10 different
  * commands that are available for the semctl() call.
  */
-void func_stat(void);
-void set_setup(void), func_set(void);
-void func_gall(void);
-void cnt_setup(int), func_cnt(int);
-void pid_setup(void), func_pid(int);
-void gval_setup(void), func_gval(int);
-void sall_setup(void), func_sall(void);
-void func_sval(void);
-void func_rmid(void);
-void child_cnt(void);
-void child_pid(void);
-
-struct semid_ds buf;
-unsigned short array[PSEMS];
-struct sembuf sops;
-
-#define INCVAL 2		/* a semaphore increment value */
+static void func_stat(void);
+static void set_setup(void), func_set(void);
+static void func_gall(void);
+static void cnt_setup(int), func_cnt(int);
+static void pid_setup(void), func_pid(int);
+static void func_gval(int);
+static void sall_setup(void), func_sall(void);
+static void func_sval(void);
+static void func_rmid(void);
+static void child_cnt(void);
+static void child_pid(void);
+
+static struct semid_ds buf;
+static unsigned short array[PSEMS];
+static struct sembuf sops;
+
+#define INCVAL 2
 #define NEWMODE	066
 #define NCHILD	5
-#define SEM2	2		/* semaphore to use for GETPID and GETVAL */
-#define SEM4	4		/* semaphore to use for GETNCNT and GETZCNT */
+#define SEM2	2
+#define SEM4	4
 #define ONE	1
 #ifdef _XLC_COMPILER
 #define SEMUN_CAST
@@ -104,64 +74,54 @@ struct sembuf sops;
 #define SEMUN_CAST (union semun)
 #endif

-#ifdef _XLC_COMPILER
-#define SEMUN_CAST
-#else
-#define SEMUN_CAST (union semun)
-#endif
-
-int pid_arr[NCHILD];
+static int pid_arr[NCHILD];

 #ifdef UCLINUX
 #define PIPE_NAME	"semctl01"
 static char *argv0;
-int sem_op;
+static int sem_op;
 #endif

-struct test_case_t {
-	int semnum;		/* the primitive semaphore to use */
-	int cmd;		/* the command to test */
-	void (*func_test) ();	/* the test function */
+static struct test_case_t {
+	int semnum;
+	int cmd;
+	void (*func_test) ();
 	union semun arg;
-	void (*func_setup) ();	/* the setup function if necessary */
+	void (*func_setup) ();
 } TC[] = {
-	{
-	0, IPC_STAT, func_stat, SEMUN_CAST & buf, NULL}, {
-	0, IPC_SET, func_set, SEMUN_CAST & buf, set_setup}, {
-	0, GETALL, func_gall, SEMUN_CAST array, NULL}, {
-	SEM4, GETNCNT, func_cnt, SEMUN_CAST & buf, cnt_setup}, {
-	SEM2, GETPID, func_pid, SEMUN_CAST & buf, pid_setup}, {
-	SEM2, GETVAL, func_gval, SEMUN_CAST & buf, NULL}, {
-	SEM4, GETZCNT, func_cnt, SEMUN_CAST & buf, cnt_setup}, {
-	0, SETALL, func_sall, SEMUN_CAST array, sall_setup}, {
-	SEM4, SETVAL, func_sval, SEMUN_CAST INCVAL, NULL}, {
-	0, IPC_RMID, func_rmid, SEMUN_CAST & buf, NULL}
+	{0, IPC_STAT, func_stat, SEMUN_CAST & buf, NULL},
+	{0, IPC_SET, func_set, SEMUN_CAST & buf, set_setup},
+	{0, GETALL, func_gall, SEMUN_CAST array, NULL},
+	{SEM4, GETNCNT, func_cnt, SEMUN_CAST & buf, cnt_setup},
+	{SEM2, GETPID, func_pid, SEMUN_CAST & buf, pid_setup},
+	{SEM2, GETVAL, func_gval, SEMUN_CAST & buf, NULL},
+	{SEM4, GETZCNT, func_cnt, SEMUN_CAST & buf, cnt_setup},
+	{0, SETALL, func_sall, SEMUN_CAST array, sall_setup},
+	{SEM4, SETVAL, func_sval, SEMUN_CAST INCVAL, NULL},
+	{0, IPC_RMID, func_rmid, SEMUN_CAST & buf, NULL},
 };

-int main(int ac, char **av)
+int main(int argc, char *argv[])
 {
 	int lc;
 	char *msg;
 	int i, j;

-	if ((msg = parse_opts(ac, av, NULL, NULL)) != NULL) {
+	msg = parse_opts(argc, argv, NULL, NULL);
+	if (msg != NULL)
 		tst_brkm(TBROK, NULL, "OPTION PARSING ERROR - %s", msg);
-	}
+
 #ifdef UCLINUX
-	argv0 = av[0];
+	argv0 = argv[0];
 	maybe_run_child(&child_pid, "nd", 1, &sem_id_1);
 	maybe_run_child(&child_cnt, "ndd", 2, &sem_id_1, &sem_op);
 #endif

-	setup();		/* global setup */
-
-	/* The following loop checks looping state if -i option given */
+	setup();

 	for (lc = 0; TEST_LOOPING(lc); lc++) {
-		/* reset tst_count in case we are looping */
 		tst_count = 0;

-		/* loop through the test cases */
 		for (i = 0; i < TST_TOTAL; i++) {

 			/*
@@ -182,10 +142,6 @@ int main(int ac, char **av)
 				}
 			}

-			/*
-			 * Use TEST macro to make the call
-			 */
-
 			TEST(semctl(sem_id_1, TC[i].semnum, TC[i].cmd,
 				    TC[i].arg));

@@ -202,9 +158,9 @@ int main(int ac, char **av)
 					 */
 					switch (TC[i].cmd) {
 					case GETNCNT:
-					 /*FALLTHROUGH*/ case GETZCNT:
-					 /*FALLTHROUGH*/ case GETPID:
-					 /*FALLTHROUGH*/ case GETVAL:
+					case GETZCNT:
+					case GETPID:
+					case GETVAL:
 						(*TC[i].func_test)
 						    (TEST_RETURN);
 						break;
@@ -222,12 +178,11 @@ int main(int ac, char **av)
 			 */
 			switch (TC[i].cmd) {
 			case GETNCNT:
-			 /*FALLTHROUGH*/ case GETZCNT:
+			case GETZCNT:
 				for (j = 0; j < NCHILD; j++) {
-					if (kill(pid_arr[j], SIGKILL) == -1) {
+					if (kill(pid_arr[j], SIGKILL) == -1)
 						tst_brkm(TBROK, cleanup,
 							 "child kill failed");
-					}
 				}
 				break;
 			}
@@ -236,39 +191,36 @@ int main(int ac, char **av)
 		 * recreate the semaphore resource if looping
 		 */
 		if (TEST_LOOPING(lc)) {
-			if ((sem_id_1 = semget(semkey, PSEMS,
-					       IPC_CREAT | IPC_EXCL | SEM_RA))
-			    == -1) {
+			sem_id_1 = semget(semkey, PSEMS,
+					  IPC_CREAT | IPC_EXCL | SEM_RA);
+			if (sem_id_1 == -1)
 				tst_brkm(TBROK, cleanup,
 					 "couldn't recreate " "semaphore");
-			}
 		}
 	}

 	cleanup();

 	tst_exit();
-
 }

 /*
  * func_stat() - check the functionality of the IPC_STAT command with semctl()
  */
-void func_stat()
+static void func_stat(void)
 {
 	/* check the number of semaphores and the ipc_perm.mode value */
-	if (buf.sem_nsems == PSEMS && buf.sem_perm.mode == (SEM_RA)) {
+	if (buf.sem_nsems == PSEMS && buf.sem_perm.mode == (SEM_RA))
 		tst_resm(TPASS, "buf.sem_nsems and buf.sem_perm.mode"
 			 " are correct");
-	} else {
+	else
 		tst_resm(TFAIL, "semaphore STAT info is incorrect");
-	}
 }

 /*
  * set_setup() - set up for the IPC_SET command with semctl()
  */
-void set_setup()
+static void set_setup(void)
 {
 	/* set up a new mode for the semaphore set */
 	buf.sem_perm.mode = SEM_RA | NEWMODE;
@@ -277,7 +229,7 @@ void set_setup()
 /*
  * func_set() - check the functionality of the IPC_SET command with semctl()
  */
-void func_set()
+static void func_set(void)
 {
 	/* first stat the semaphore to get the new data */
 	if (semctl(sem_id_1, 0, IPC_STAT, (union semun)&buf) == -1) {
@@ -286,17 +238,16 @@ void func_set()
 	}

 	/* check that the new mode is what we set */
-	if (buf.sem_perm.mode == (SEM_RA | NEWMODE)) {
+	if (buf.sem_perm.mode == (SEM_RA | NEWMODE))
 		tst_resm(TPASS, "buf.sem_perm.mode is correct");
-	} else {
+	else
 		tst_resm(TFAIL, "semaphore mode info is incorrect");
-	}
 }

 /*
  * func_gall() - check the functionality of the GETALL command with semctl()
  */
-void func_gall()
+static void func_gall(void)
 {
 	int i;

@@ -313,7 +264,7 @@ void func_gall()
 /*
  * cnt_setup() - set up for the GETNCNT and GETZCNT commands with semctl()
  */
-void cnt_setup(int opval)
+static void cnt_setup(int opval)
 {
 	int pid, i;

@@ -326,31 +277,31 @@ void cnt_setup(int opval)
 	if (opval == 0) {
 		/* initialize the semaphore value to ONE */
 		sops.sem_op = ONE;
-		if (semop(sem_id_1, &sops, 1) == -1) {
+		if (semop(sem_id_1, &sops, 1) == -1)
 			tst_brkm(TBROK, cleanup, "semop #1 failed - cnt_setup");
-		}
 	}

-	sops.sem_op = opval;	/* set the correct operation */
+	/* set the correct operation */
+	sops.sem_op = opval;
 	for (i = 0; i < NCHILD; i++) {
 		if (sync_pipe_create(sync_pipes, PIPE_NAME) == -1)
 			tst_brkm(TBROK, cleanup, "sync_pipe_create failed");

 		/* fork five children to wait */
-		if ((pid = FORK_OR_VFORK()) == -1)
+		pid = FORK_OR_VFORK();
+		if (pid == -1)
 			tst_brkm(TBROK, cleanup, "fork failed in cnt_setup");

-		if (pid == 0) {	/* child */
+		if (pid == 0) {
 #ifdef UCLINUX
 			sem_op = sops.sem_op;
-			if (self_exec(argv0, "ndd", 2, sem_id_1, sem_op) < 0) {
+			if (self_exec(argv0, "ndd", 2, sem_id_1, sem_op) < 0)
 				tst_brkm(TBROK, cleanup, "self_exec failed "
 					 "in cnt_setup");
-			}
 #else
 			child_cnt();
 #endif
-		} else {	/* parent */
+		} else {
 			if (sync_pipe_wait(sync_pipes) == -1)
 				tst_brkm(TBROK, cleanup,
 					 "sync_pipe_wait failed");
@@ -370,7 +321,7 @@ void cnt_setup(int opval)
 	sleep(1);
 }

-void child_cnt()
+static void child_cnt(void)
 {
 #ifdef UCLINUX
 	sops.sem_op = (short int)sem_op;
@@ -397,9 +348,9 @@ void child_cnt()
 	 * routine which should cause an error to be return
 	 * by the semop() call.
 	 */
-	if (semop(sem_id_1, &sops, 1) != -1) {
+	if (semop(sem_id_1, &sops, 1) != -1)
 		tst_resm(TBROK, "semop succeeded - cnt_setup");
-	}
+
 	exit(0);
 }

@@ -407,40 +358,37 @@ void child_cnt()
  * func_cnt() - check the functionality of the GETNCNT and GETZCNT commands
  *	        with semctl()
  */
-void func_cnt(int rval)
+static void func_cnt(int rval)
 {

-	if (rval == NCHILD) {
+	if (rval == NCHILD)
 		tst_resm(TPASS, "number of sleeping processes is correct");
-	} else {
+	else
 		tst_resm(TFAIL, "number of sleeping processes is not correct");
-	}
 }

 /*
  * pid_setup() - set up for the GETPID command with semctl()
  */
-void pid_setup()
+static void pid_setup(void)
 {
 	int pid;

-	if (sync_pipe_create(sync_pipes, PIPE_NAME) == -1) {
+	if (sync_pipe_create(sync_pipes, PIPE_NAME) == -1)
 		tst_brkm(TBROK, cleanup, "sync_pipe_create failed");
-	}

 	/*
 	 * Fork a child to do a semop that will pass.
 	 */
-	if ((pid = FORK_OR_VFORK()) == -1) {
+	pid = FORK_OR_VFORK();
+	if (pid == -1)
 		tst_brkm(TBROK, cleanup, "fork failed in pid_setup()");
-	}

 	if (pid == 0) {		/* child */
 #ifdef UCLINUX
-		if (self_exec(argv0, "nd", 1, sem_id_1) < 0) {
+		if (self_exec(argv0, "nd", 1, sem_id_1) < 0)
 			tst_brkm(TBROK, cleanup, "self_exec failed "
 				 "in pid_setup()");
-		}
 #else
 		child_pid();
 #endif
@@ -455,7 +403,7 @@ void pid_setup()
 	}
 }

-void child_pid()
+static void child_pid(void)
 {
 #ifdef UCLINUX
 	if (sync_pipe_create(sync_pipes, PIPE_NAME) == -1)
@@ -468,53 +416,50 @@ void child_pid()
 	if (sync_pipe_close(sync_pipes, PIPE_NAME) == -1)
 		tst_brkm(TBROK, cleanup, "sync_pipe_close failed");

-	sops.sem_num = SEM2;	/* semaphore to change */
-	sops.sem_op = ONE;	/* operation is to increment semaphore */
+	sops.sem_num = SEM2;
+	sops.sem_op = ONE;
 	sops.sem_flg = 0;

 	/*
 	 * Do a semop that will increment the semaphore.
 	 */
-	if (semop(sem_id_1, &sops, 1) == -1) {
+	if (semop(sem_id_1, &sops, 1) == -1)
 		tst_resm(TBROK, "semop failed - pid_setup");
-	}
+
 	exit(0);
 }

 /*
  * func_pid() - check the functionality of the GETPID command with semctl()
  */
-void func_pid(int rval)
+static void func_pid(int rval)
 {
 	/* compare the rval (pid) to the saved pid from the setup */
-	if (rval == pid_arr[SEM2]) {
+	if (rval == pid_arr[SEM2])
 		tst_resm(TPASS, "last pid value is correct");
-	} else {
+	else
 		tst_resm(TFAIL, "last pid value is not correct");
-	}
 }

 /*
  * func_gval() - check the functionality of the GETVAL command with semctl()
  */
-void func_gval(int rval)
+static void func_gval(int rval)
 {
 	/*
 	 * This is a simple test.  The semaphore value should be equal
 	 * to ONE as it was set in the last test (GETPID).
 	 */
-	if (rval == 1) {
+	if (rval == 1)
 		tst_resm(TPASS, "semaphore value is correct");
-	} else {
+	else
 		tst_resm(TFAIL, "semaphore value is not correct");
-	}
-
 }

 /*
  * all_setup() - set up for the SETALL command with semctl()
  */
-void sall_setup()
+static void sall_setup(void)
 {
 	int i;

@@ -527,7 +472,7 @@ void sall_setup()
 /*
  * func_sall() - check the functionality of the SETALL command with semctl()
  */
-void func_sall()
+static void func_sall(void)
 {
 	int i;
 	unsigned short rarray[PSEMS];
@@ -536,9 +481,8 @@ void func_sall()
 	 * do a GETALL and compare the values to those set above
 	 */

-	if (semctl(sem_id_1, 0, GETALL, (union semun)rarray) == -1) {
+	if (semctl(sem_id_1, 0, GETALL, (union semun)rarray) == -1)
 		tst_brkm(TBROK, cleanup, "semctl failed in func_sall");
-	}

 	for (i = 0; i < PSEMS; i++) {
 		if (array[i] != rarray[i]) {
@@ -553,7 +497,7 @@ void func_sall()
 /*
  * func_sval() - check the functionality of the SETVAL command with semctl()
  */
-void func_sval()
+static void func_sval(void)
 {
 	int semv;
 	union semun arr;
@@ -562,42 +506,36 @@ void func_sval()
 	 * do a GETVAL and compare it to the value set above
 	 */

-	if ((semv = semctl(sem_id_1, SEM4, GETVAL, arr)) == -1) {
+	semv = semctl(sem_id_1, SEM4, GETVAL, arr);
+	if (semv == -1)
 		tst_brkm(TBROK, cleanup, "semctl failed in func_sval");
-	}

-	if (semv != INCVAL) {
+	if (semv != INCVAL)
 		tst_resm(TFAIL, "semaphore value is not what was set");
-	} else {
+	else
 		tst_resm(TPASS, "semaphore value is correct");
-	}
 }

 /*
  * func_rmid() - check the functionality of the IPC_RMID command with semctl()
  */
-void func_rmid()
+static void func_rmid(void)
 {

 	/*
 	 * do a semop() - we should get EINVAL
 	 */
-	if (semop(sem_id_1, &sops, 1) != -1) {
+	if (semop(sem_id_1, &sops, 1) != -1)
 		tst_resm(TFAIL, "semop succeeded on expected fail");
-	}

-	if (errno != EINVAL) {
+	if (errno != EINVAL)
 		tst_resm(TFAIL, "returned errno - %d - is not expected", errno);
-	} else {
+	else
 		tst_resm(TPASS, "semaphore appears to be removed");
-	}

 	sem_id_1 = -1;
 }

-/*
- * setup() - performs all the ONE TIME setup for this test.
- */
 void setup(void)
 {

@@ -605,27 +543,17 @@ void setup(void)

 	TEST_PAUSE;

-	/*
-	 * Create a temporary directory and cd into it.
-	 * This helps to ensure that a unique msgkey is created.
-	 * See ../lib/libipc.c for more information.
-	 */
 	tst_tmpdir();

 	/* get an IPC resource key */
 	semkey = getipckey();

 	/* create a semaphore set with read and alter permissions */
-	if ((sem_id_1 =
-	     semget(semkey, PSEMS, IPC_CREAT | IPC_EXCL | SEM_RA)) == -1) {
+	sem_id_1 = semget(semkey, PSEMS, IPC_CREAT | IPC_EXCL | SEM_RA);
+	if (sem_id_1 == -1)
 		tst_brkm(TBROK, cleanup, "couldn't create semaphore in setup");
-	}
 }

-/*
- * cleanup() - performs all the ONE TIME cleanup for this test at completion
- * 	       or premature exit.
- */
 void cleanup(void)
 {
 	/* if it exists, remove the semaphore resource */
@@ -633,10 +561,5 @@ void cleanup(void)

 	tst_rmdir();

-	/*
-	 * print timing stats if that option was specified.
-	 * print errno log if that option was specified.
-	 */
 	TEST_CLEANUP;
-
 }
-- 
1.8.1

------------------------------------------------------------------------------
Learn Graph Databases - Download FREE O'Reilly Book
"Graph Databases" is the definitive new guide to graph databases and 
their applications. This 200-page book is written by three acclaimed 
leaders in the field. The early access version is available now. 
Download your free book today! http://p.sf.net/sfu/neotech_d2d_may
_______________________________________________
Ltp-list mailing list
Ltp-list@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ltp-list

^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [LTP]  [PATCH 2/2]semctl/semctl01.c: Test features IPC_INFO, SEM_INFO and SEM_STAT
  2013-05-09  8:42 [LTP] [PATCH 1/2]semctl/semctl01.c: cleanup DAN LI
@ 2013-05-09  8:46 ` DAN LI
  2013-05-09 13:32   ` chrubis
  2013-05-09 16:22 ` [LTP] [PATCH 1/2]semctl/semctl01.c: cleanup Mike Frysinger
  1 sibling, 1 reply; 10+ messages in thread
From: DAN LI @ 2013-05-09  8:46 UTC (permalink / raw)
  To: LTP list


Additional tests for features IPC_INFO, SEM_INFO and SEM_STAT.

Signed-off-by: DAN LI <li.dan@cn.fujitsu.com>
---
 testcases/kernel/syscalls/ipc/semctl/semctl01.c | 45 +++++++++++++++++++++++++
 1 file changed, 45 insertions(+)

diff --git a/testcases/kernel/syscalls/ipc/semctl/semctl01.c b/testcases/kernel/syscalls/ipc/semctl/semctl01.c
index 93d7cd7..8e5c907 100644
--- a/testcases/kernel/syscalls/ipc/semctl/semctl01.c
+++ b/testcases/kernel/syscalls/ipc/semctl/semctl01.c
@@ -32,11 +32,19 @@
  *        system. Fix this by using pipes to synchronize processes.
  */

+#ifndef _GNU_SOURCE
+#define _GNU_SOURCE
+#endif
 #include "ipcsem.h"
 #include "libtestsuite.h"

 char *TCID = "semctl01";
+
+#ifdef __linux__
+int TST_TOTAL = 13;
+#else
 int TST_TOTAL = 10;
+#endif

 static int sem_id_1 = -1;

@@ -57,8 +65,14 @@ static void func_sval(void);
 static void func_rmid(void);
 static void child_cnt(void);
 static void child_pid(void);
+#ifdef __linux__
+static void func_iinfo(int);
+static void func_sinfo(void);
+static void func_sstat(int);
+#endif

 static struct semid_ds buf;
+static struct seminfo ipc_buf;
 static unsigned short array[PSEMS];
 static struct sembuf sops;

@@ -98,6 +112,11 @@ static struct test_case_t {
 	{SEM4, GETZCNT, func_cnt, SEMUN_CAST & buf, cnt_setup},
 	{0, SETALL, func_sall, SEMUN_CAST array, sall_setup},
 	{SEM4, SETVAL, func_sval, SEMUN_CAST INCVAL, NULL},
+#ifdef __linux__
+	{0, IPC_INFO, func_iinfo, SEMUN_CAST & ipc_buf, NULL},
+	{0, SEM_INFO, func_sinfo, SEMUN_CAST & ipc_buf, NULL},
+	{0, SEM_STAT, func_sstat, SEMUN_CAST & buf, NULL},
+#endif
 	{0, IPC_RMID, func_rmid, SEMUN_CAST & buf, NULL},
 };

@@ -161,6 +180,8 @@ int main(int argc, char *argv[])
 					case GETZCNT:
 					case GETPID:
 					case GETVAL:
+					case IPC_INFO:
+					case SEM_STAT:
 						(*TC[i].func_test)
 						    (TEST_RETURN);
 						break;
@@ -536,6 +557,30 @@ static void func_rmid(void)
 	sem_id_1 = -1;
 }

+static void func_iinfo(int hidx)
+{
+	if (hidx >= 0)
+		tst_resm(TPASS, "the highest index is correct");
+	else
+		tst_resm(TFAIL, "the highest index is incorrect");
+}
+
+static void func_sinfo(void)
+{
+	if (ipc_buf.semusz < 1)
+		tst_resm(TFAIL, "number of semaphore sets is incorrect");
+	else
+		tst_resm(TPASS, "number of semaphore sets is correct");
+}
+
+static void func_sstat(int semidx)
+{
+	if (semidx >= 0)
+		tst_resm(TPASS, "id of the semaphore set is correct");
+	else
+		tst_resm(TFAIL, "id of the semaphore set is incorrect");
+}
+
 void setup(void)
 {

-- 
1.8.1



------------------------------------------------------------------------------
Learn Graph Databases - Download FREE O'Reilly Book
"Graph Databases" is the definitive new guide to graph databases and 
their applications. This 200-page book is written by three acclaimed 
leaders in the field. The early access version is available now. 
Download your free book today! http://p.sf.net/sfu/neotech_d2d_may
_______________________________________________
Ltp-list mailing list
Ltp-list@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ltp-list

^ permalink raw reply related	[flat|nested] 10+ messages in thread

* Re: [LTP] [PATCH 2/2]semctl/semctl01.c: Test features IPC_INFO, SEM_INFO and SEM_STAT
  2013-05-09  8:46 ` [LTP] [PATCH 2/2]semctl/semctl01.c: Test features IPC_INFO, SEM_INFO and SEM_STAT DAN LI
@ 2013-05-09 13:32   ` chrubis
       [not found]     ` <201305091220.44861.vapier@gentoo.org>
  0 siblings, 1 reply; 10+ messages in thread
From: chrubis @ 2013-05-09 13:32 UTC (permalink / raw)
  To: DAN LI; +Cc: LTP list

Hi!
> +#ifdef __linux__
> +int TST_TOTAL = 13;
> +#else
>  int TST_TOTAL = 10;
> +#endif
> 
>  static int sem_id_1 = -1;
> 
> @@ -57,8 +65,14 @@ static void func_sval(void);
>  static void func_rmid(void);
>  static void child_cnt(void);
>  static void child_pid(void);
> +#ifdef __linux__
> +static void func_iinfo(int);
> +static void func_sinfo(void);
> +static void func_sstat(int);
> +#endif

Well the only part of the LTP that we promise that will build and run on
anything else than Linux is Open Posix Testsuite, so in my opinion these
ifdefs are not needed. Has anybody different opinion?

-- 
Cyril Hrubis
chrubis@suse.cz

------------------------------------------------------------------------------
Learn Graph Databases - Download FREE O'Reilly Book
"Graph Databases" is the definitive new guide to graph databases and 
their applications. This 200-page book is written by three acclaimed 
leaders in the field. The early access version is available now. 
Download your free book today! http://p.sf.net/sfu/neotech_d2d_may
_______________________________________________
Ltp-list mailing list
Ltp-list@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ltp-list

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [LTP] [PATCH 1/2]semctl/semctl01.c: cleanup
  2013-05-09  8:42 [LTP] [PATCH 1/2]semctl/semctl01.c: cleanup DAN LI
  2013-05-09  8:46 ` [LTP] [PATCH 2/2]semctl/semctl01.c: Test features IPC_INFO, SEM_INFO and SEM_STAT DAN LI
@ 2013-05-09 16:22 ` Mike Frysinger
  2013-05-10  2:35   ` DAN LI
  1 sibling, 1 reply; 10+ messages in thread
From: Mike Frysinger @ 2013-05-09 16:22 UTC (permalink / raw)
  To: ltp-list


[-- Attachment #1.1: Type: Text/Plain, Size: 1031 bytes --]

On Thursday 09 May 2013 04:42:55 DAN LI wrote:
> --- a/testcases/kernel/syscalls/ipc/semctl/semctl01.c
> +++ b/testcases/kernel/syscalls/ipc/semctl/semctl01.c
> 
>  /*
> @@ -24,32 +23,6 @@
>   * DESCRIPTION
>   *	semctl01 - test the 10 possible semctl() commands
>   *
> - * ALGORITHM
> - *	create a semaphore set with read and alter permissions
> - *	loop if that option was specified
> - *	  loop through the test cases
> - *	    do any setup required for the test case
> - *	    make the semctl() call using the TEST() macro
> - *	    check the return code
> - *	      if failure, issue a FAIL message.
> - *	    otherwise,
> - *	      if doing functionality testing
> - *		call the appropriate test function
> - *	  	if correct,
> - *			issue a PASS message
> - *		otherwise
> - *			issue a FAIL message
> - *	call cleanup

i don't see high level DESCRIPTION/ALGORITHM as "useless".  why do you ?

>   * HISTORY

on the flip side, HISTORY is pretty useless.  that's what `git log` is for.
-mike

[-- Attachment #1.2: This is a digitally signed message part. --]
[-- Type: application/pgp-signature, Size: 836 bytes --]

[-- Attachment #2: Type: text/plain, Size: 403 bytes --]

------------------------------------------------------------------------------
Learn Graph Databases - Download FREE O'Reilly Book
"Graph Databases" is the definitive new guide to graph databases and 
their applications. This 200-page book is written by three acclaimed 
leaders in the field. The early access version is available now. 
Download your free book today! http://p.sf.net/sfu/neotech_d2d_may

[-- Attachment #3: Type: text/plain, Size: 155 bytes --]

_______________________________________________
Ltp-list mailing list
Ltp-list@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ltp-list

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [LTP] [PATCH 1/2]semctl/semctl01.c: cleanup
  2013-05-09 16:22 ` [LTP] [PATCH 1/2]semctl/semctl01.c: cleanup Mike Frysinger
@ 2013-05-10  2:35   ` DAN LI
  2013-05-10 15:27     ` Mike Frysinger
  0 siblings, 1 reply; 10+ messages in thread
From: DAN LI @ 2013-05-10  2:35 UTC (permalink / raw)
  To: Mike Frysinger; +Cc: ltp-list

On 05/10/2013 12:22 AM, Mike Frysinger wrote:
> On Thursday 09 May 2013 04:42:55 DAN LI wrote:
>> --- a/testcases/kernel/syscalls/ipc/semctl/semctl01.c
>> +++ b/testcases/kernel/syscalls/ipc/semctl/semctl01.c
>>
>>  /*
>> @@ -24,32 +23,6 @@
>>   * DESCRIPTION
>>   *	semctl01 - test the 10 possible semctl() commands
>>   *
>> - * ALGORITHM
>> - *	create a semaphore set with read and alter permissions
>> - *	loop if that option was specified
>> - *	  loop through the test cases
>> - *	    do any setup required for the test case
>> - *	    make the semctl() call using the TEST() macro
>> - *	    check the return code
>> - *	      if failure, issue a FAIL message.
>> - *	    otherwise,
>> - *	      if doing functionality testing
>> - *		call the appropriate test function
>> - *	  	if correct,
>> - *			issue a PASS message
>> - *		otherwise
>> - *			issue a FAIL message
>> - *	call cleanup
> 
> i don't see high level DESCRIPTION/ALGORITHM as "useless".  why do you ?

In my opinion, "ALGORITHM" section of many ltp testcases follows one format:
------------------------------------------------
setup()
loop test frame
	loop all test cases
		TEST(call)
		if call failed
			log the errno
		else
			if functionality is ok
				case PASS
			else
				case FAIL
cleanup()
------------------------------------------------

So, i think this section is redundant and useless once someone has
learned the test frame.

> 
>>   * HISTORY
> 
> on the flip side, HISTORY is pretty useless.  that's what `git log` is for.

Agreed.

I'll send a V2 to fix it.

Thanks,
DAN LI
> -mike
> 



------------------------------------------------------------------------------
Learn Graph Databases - Download FREE O'Reilly Book
"Graph Databases" is the definitive new guide to graph databases and 
their applications. This 200-page book is written by three acclaimed 
leaders in the field. The early access version is available now. 
Download your free book today! http://p.sf.net/sfu/neotech_d2d_may
_______________________________________________
Ltp-list mailing list
Ltp-list@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ltp-list

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [LTP] [PATCH 2/2]semctl/semctl01.c: Test features IPC_INFO, SEM_INFO and SEM_STAT
       [not found]     ` <201305091220.44861.vapier@gentoo.org>
@ 2013-05-10  8:30       ` Wanlong Gao
  2013-05-10 15:36         ` Mike Frysinger
  0 siblings, 1 reply; 10+ messages in thread
From: Wanlong Gao @ 2013-05-10  8:30 UTC (permalink / raw)
  To: Mike Frysinger; +Cc: ltp-list

On 05/10/2013 12:20 AM, Mike Frysinger wrote:
> On Thursday 09 May 2013 09:32:32 chrubis@suse.cz wrote:
>>> +#ifdef __linux__
>>> +int TST_TOTAL = 13;
>>> +#else
>>>  int TST_TOTAL = 10;
>>> +#endif
>>>  static int sem_id_1 = -1;
>>> @@ -57,8 +65,14 @@ static void func_sval(void);
>>>  static void func_rmid(void);
>>>  static void child_cnt(void);
>>>  static void child_pid(void);
>>> +#ifdef __linux__
>>> +static void func_iinfo(int);
>>> +static void func_sinfo(void);
>>> +static void func_sstat(int);
>>> +#endif
>>
>> Well the only part of the LTP that we promise that will build and run on
>> anything else than Linux is Open Posix Testsuite, so in my opinion these
>> ifdefs are not needed. Has anybody different opinion?
> 
> i agree -- drop the __linux__ check, especially under testcases/kernel/ ... 
> the "kernel" there is "linux".

So, you mean drop the "sgi" as well?

Thanks,
Wanlong Gao

> -mike
> 
> 
> 
> ------------------------------------------------------------------------------
> Learn Graph Databases - Download FREE O'Reilly Book
> "Graph Databases" is the definitive new guide to graph databases and 
> their applications. This 200-page book is written by three acclaimed 
> leaders in the field. The early access version is available now. 
> Download your free book today! http://p.sf.net/sfu/neotech_d2d_may
> 
> 
> 
> _______________________________________________
> Ltp-list mailing list
> Ltp-list@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/ltp-list
> 


------------------------------------------------------------------------------
Learn Graph Databases - Download FREE O'Reilly Book
"Graph Databases" is the definitive new guide to graph databases and 
their applications. This 200-page book is written by three acclaimed 
leaders in the field. The early access version is available now. 
Download your free book today! http://p.sf.net/sfu/neotech_d2d_may
_______________________________________________
Ltp-list mailing list
Ltp-list@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ltp-list

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [LTP] [PATCH 1/2]semctl/semctl01.c: cleanup
  2013-05-10  2:35   ` DAN LI
@ 2013-05-10 15:27     ` Mike Frysinger
  2013-05-13 11:23       ` chrubis
  0 siblings, 1 reply; 10+ messages in thread
From: Mike Frysinger @ 2013-05-10 15:27 UTC (permalink / raw)
  To: DAN LI; +Cc: ltp-list


[-- Attachment #1.1: Type: Text/Plain, Size: 1713 bytes --]

On Thursday 09 May 2013 22:35:15 DAN LI wrote:
> On 05/10/2013 12:22 AM, Mike Frysinger wrote:
> > On Thursday 09 May 2013 04:42:55 DAN LI wrote:
> >> --- a/testcases/kernel/syscalls/ipc/semctl/semctl01.c
> >> +++ b/testcases/kernel/syscalls/ipc/semctl/semctl01.c
> >> 
> >>  /*
> >> 
> >> @@ -24,32 +23,6 @@
> >> 
> >>   * DESCRIPTION
> >>   *	semctl01 - test the 10 possible semctl() commands
> >>   *
> >> 
> >> - * ALGORITHM
> >> - *	create a semaphore set with read and alter permissions
> >> - *	loop if that option was specified
> >> - *	  loop through the test cases
> >> - *	    do any setup required for the test case
> >> - *	    make the semctl() call using the TEST() macro
> >> - *	    check the return code
> >> - *	      if failure, issue a FAIL message.
> >> - *	    otherwise,
> >> - *	      if doing functionality testing
> >> - *		call the appropriate test function
> >> - *	  	if correct,
> >> - *			issue a PASS message
> >> - *		otherwise
> >> - *			issue a FAIL message
> >> - *	call cleanup
> > 
> > i don't see high level DESCRIPTION/ALGORITHM as "useless".  why do you ?
> 
> In my opinion, "ALGORITHM" section of many ltp testcases follows one
> format: ------------------------------------------------
> setup()
> loop test frame
> 	loop all test cases
> 		TEST(call)
> 		if call failed
> 			log the errno
> 		else
> 			if functionality is ok
> 				case PASS
> 			else
> 				case FAIL
> cleanup()
> ------------------------------------------------
> 
> So, i think this section is redundant and useless once someone has
> learned the test frame.

and if you delete all the sections, then what are people going to refer to ?
-mike

[-- Attachment #1.2: This is a digitally signed message part. --]
[-- Type: application/pgp-signature, Size: 836 bytes --]

[-- Attachment #2: Type: text/plain, Size: 403 bytes --]

------------------------------------------------------------------------------
Learn Graph Databases - Download FREE O'Reilly Book
"Graph Databases" is the definitive new guide to graph databases and 
their applications. This 200-page book is written by three acclaimed 
leaders in the field. The early access version is available now. 
Download your free book today! http://p.sf.net/sfu/neotech_d2d_may

[-- Attachment #3: Type: text/plain, Size: 155 bytes --]

_______________________________________________
Ltp-list mailing list
Ltp-list@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ltp-list

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [LTP] [PATCH 2/2]semctl/semctl01.c: Test features IPC_INFO, SEM_INFO and SEM_STAT
  2013-05-10  8:30       ` Wanlong Gao
@ 2013-05-10 15:36         ` Mike Frysinger
  2013-05-13  2:28           ` Wanlong Gao
  0 siblings, 1 reply; 10+ messages in thread
From: Mike Frysinger @ 2013-05-10 15:36 UTC (permalink / raw)
  To: ltp-list, gaowanlong


[-- Attachment #1.1: Type: Text/Plain, Size: 1275 bytes --]

On Friday 10 May 2013 04:30:00 Wanlong Gao wrote:
> On 05/10/2013 12:20 AM, Mike Frysinger wrote:
> > On Thursday 09 May 2013 09:32:32 chrubis@suse.cz wrote:
> >>> +#ifdef __linux__
> >>> +int TST_TOTAL = 13;
> >>> +#else
> >>> 
> >>>  int TST_TOTAL = 10;
> >>> 
> >>> +#endif
> >>> 
> >>>  static int sem_id_1 = -1;
> >>> 
> >>> @@ -57,8 +65,14 @@ static void func_sval(void);
> >>> 
> >>>  static void func_rmid(void);
> >>>  static void child_cnt(void);
> >>>  static void child_pid(void);
> >>> 
> >>> +#ifdef __linux__
> >>> +static void func_iinfo(int);
> >>> +static void func_sinfo(void);
> >>> +static void func_sstat(int);
> >>> +#endif
> >> 
> >> Well the only part of the LTP that we promise that will build and run on
> >> anything else than Linux is Open Posix Testsuite, so in my opinion these
> >> ifdefs are not needed. Has anybody different opinion?
> > 
> > i agree -- drop the __linux__ check, especially under testcases/kernel/
> > ... the "kernel" there is "linux".
> 
> So, you mean drop the "sgi" as well?

scrubbing it from testcases/kernel/syscalls/sighold/sighold02.c makes sense.  
SGI is dead and so is IRIX.  if they want to run tests against their system, 
then can download an older version of LTP.
-mike

[-- Attachment #1.2: This is a digitally signed message part. --]
[-- Type: application/pgp-signature, Size: 836 bytes --]

[-- Attachment #2: Type: text/plain, Size: 403 bytes --]

------------------------------------------------------------------------------
Learn Graph Databases - Download FREE O'Reilly Book
"Graph Databases" is the definitive new guide to graph databases and 
their applications. This 200-page book is written by three acclaimed 
leaders in the field. The early access version is available now. 
Download your free book today! http://p.sf.net/sfu/neotech_d2d_may

[-- Attachment #3: Type: text/plain, Size: 155 bytes --]

_______________________________________________
Ltp-list mailing list
Ltp-list@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ltp-list

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [LTP] [PATCH 2/2]semctl/semctl01.c: Test features IPC_INFO, SEM_INFO and SEM_STAT
  2013-05-10 15:36         ` Mike Frysinger
@ 2013-05-13  2:28           ` Wanlong Gao
  0 siblings, 0 replies; 10+ messages in thread
From: Wanlong Gao @ 2013-05-13  2:28 UTC (permalink / raw)
  To: Mike Frysinger; +Cc: ltp-list

On 05/10/2013 11:36 PM, Mike Frysinger wrote:
> On Friday 10 May 2013 04:30:00 Wanlong Gao wrote:
>> On 05/10/2013 12:20 AM, Mike Frysinger wrote:
>>> On Thursday 09 May 2013 09:32:32 chrubis@suse.cz wrote:
>>>>> +#ifdef __linux__
>>>>> +int TST_TOTAL = 13;
>>>>> +#else
>>>>>
>>>>>  int TST_TOTAL = 10;
>>>>>
>>>>> +#endif
>>>>>
>>>>>  static int sem_id_1 = -1;
>>>>>
>>>>> @@ -57,8 +65,14 @@ static void func_sval(void);
>>>>>
>>>>>  static void func_rmid(void);
>>>>>  static void child_cnt(void);
>>>>>  static void child_pid(void);
>>>>>
>>>>> +#ifdef __linux__
>>>>> +static void func_iinfo(int);
>>>>> +static void func_sinfo(void);
>>>>> +static void func_sstat(int);
>>>>> +#endif
>>>>
>>>> Well the only part of the LTP that we promise that will build and run on
>>>> anything else than Linux is Open Posix Testsuite, so in my opinion these
>>>> ifdefs are not needed. Has anybody different opinion?
>>>
>>> i agree -- drop the __linux__ check, especially under testcases/kernel/
>>> ... the "kernel" there is "linux".
>>
>> So, you mean drop the "sgi" as well?
> 
> scrubbing it from testcases/kernel/syscalls/sighold/sighold02.c makes sense.  
> SGI is dead and so is IRIX.  if they want to run tests against their system, 
> then can download an older version of LTP.

Make sense.

Thanks,
Wanlong Gao

> -mike
> 


------------------------------------------------------------------------------
Learn Graph Databases - Download FREE O'Reilly Book
"Graph Databases" is the definitive new guide to graph databases and 
their applications. This 200-page book is written by three acclaimed 
leaders in the field. The early access version is available now. 
Download your free book today! http://p.sf.net/sfu/neotech_d2d_may
_______________________________________________
Ltp-list mailing list
Ltp-list@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ltp-list

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [LTP] [PATCH 1/2]semctl/semctl01.c: cleanup
  2013-05-10 15:27     ` Mike Frysinger
@ 2013-05-13 11:23       ` chrubis
  0 siblings, 0 replies; 10+ messages in thread
From: chrubis @ 2013-05-13 11:23 UTC (permalink / raw)
  To: Mike Frysinger; +Cc: ltp-list

Hi!
> > > i don't see high level DESCRIPTION/ALGORITHM as "useless".  why do you ?
> > 
> > In my opinion, "ALGORITHM" section of many ltp testcases follows one
> > format: ------------------------------------------------
> > setup()
> > loop test frame
> > 	loop all test cases
> > 		TEST(call)
> > 		if call failed
> > 			log the errno
> > 		else
> > 			if functionality is ok
> > 				case PASS
> > 			else
> > 				case FAIL
> > cleanup()
> > ------------------------------------------------
> > 
> > So, i think this section is redundant and useless once someone has
> > learned the test frame.
> 
> and if you delete all the sections, then what are people going to refer to ?

I usually end up with less structured but IMHO more readable
description. Having the descriptions in form of pseudocode seems to be
useless as the actual code is right bellow it. I tend to rewrite these
into something like:

'Call foo with bar options and check for xyz result.'

Which shortens the description into one sentence but all the important
information is preserved.

-- 
Cyril Hrubis
chrubis@suse.cz

------------------------------------------------------------------------------
Learn Graph Databases - Download FREE O'Reilly Book
"Graph Databases" is the definitive new guide to graph databases and 
their applications. This 200-page book is written by three acclaimed 
leaders in the field. The early access version is available now. 
Download your free book today! http://p.sf.net/sfu/neotech_d2d_may
_______________________________________________
Ltp-list mailing list
Ltp-list@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ltp-list

^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2013-05-13 11:22 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-05-09  8:42 [LTP] [PATCH 1/2]semctl/semctl01.c: cleanup DAN LI
2013-05-09  8:46 ` [LTP] [PATCH 2/2]semctl/semctl01.c: Test features IPC_INFO, SEM_INFO and SEM_STAT DAN LI
2013-05-09 13:32   ` chrubis
     [not found]     ` <201305091220.44861.vapier@gentoo.org>
2013-05-10  8:30       ` Wanlong Gao
2013-05-10 15:36         ` Mike Frysinger
2013-05-13  2:28           ` Wanlong Gao
2013-05-09 16:22 ` [LTP] [PATCH 1/2]semctl/semctl01.c: cleanup Mike Frysinger
2013-05-10  2:35   ` DAN LI
2013-05-10 15:27     ` Mike Frysinger
2013-05-13 11:23       ` chrubis

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.