Since msgmni now scales to the memory size, it may reach big values. To avoid forking 2*msgmni processes and create msgmni msg queues, do not take msgmni from procfs anymore. Just define it as 16 (which is the MSGMNI constant value in linux/msg.h) Also fixed the Makefiles in ipc/lib and ipc/msgctl: there was no dependency on the lib/ipc*.h header files. Signed-off-by: Nadia Derbey --- testcases/kernel/syscalls/ipc/lib/Makefile | 3 +++ testcases/kernel/syscalls/ipc/lib/ipcmsg.h | 2 ++ testcases/kernel/syscalls/ipc/msgctl/Makefile | 3 +++ testcases/kernel/syscalls/ipc/msgctl/msgctl08.c | 23 ++--------------------- testcases/kernel/syscalls/ipc/msgctl/msgctl09.c | 24 ++---------------------- 5 files changed, 12 insertions(+), 43 deletions(-) Index: ltp-full-20080131/testcases/kernel/syscalls/ipc/msgctl/msgctl08.c =================================================================== --- ltp-full-20080131.orig/testcases/kernel/syscalls/ipc/msgctl/msgctl08.c 2006-02-11 05:46:36.000000000 +0100 +++ ltp-full-20080131/testcases/kernel/syscalls/ipc/msgctl/msgctl08.c 2008-02-19 18:45:27.000000000 +0100 @@ -50,6 +50,7 @@ #include #include "test.h" #include "usctest.h" +#include "ipcmsg.h" void setup(); void cleanup(); @@ -479,26 +480,6 @@ static int get_used_msgqueues() return used_queues; } -/** Get the max number of message queues allowed on system */ -static int get_max_msgqueues() -{ - FILE *f; - char buff[BUFSIZE]; - - /* Get the max number of message queues allowed on system */ - f = fopen("/proc/sys/kernel/msgmni", "r"); - if (!f){ - tst_resm(TBROK,"Could not open /proc/sys/kernel/msgmni"); - tst_exit(); - } - if (!fgets(buff, BUFSIZE, f)) { - tst_resm(TBROK,"Could not read /proc/sys/kernel/msgmni"); - tst_exit(); - } - fclose(f); - return atoi(buff); -} - /*************************************************************** * setup() - performs all ONE TIME setup for this test. *****************************************************************/ @@ -520,7 +501,7 @@ setup() */ TEST_PAUSE; - MSGMNI = get_max_msgqueues() - get_used_msgqueues(); + MSGMNI = MAX_MSGQUEUES - get_used_msgqueues(); if (MSGMNI <= 0){ tst_resm(TBROK,"Max number of message queues already used, cannot create more."); cleanup(); Index: ltp-full-20080131/testcases/kernel/syscalls/ipc/msgctl/msgctl09.c =================================================================== --- ltp-full-20080131.orig/testcases/kernel/syscalls/ipc/msgctl/msgctl09.c 2006-02-11 05:46:36.000000000 +0100 +++ ltp-full-20080131/testcases/kernel/syscalls/ipc/msgctl/msgctl09.c 2008-02-19 18:46:44.000000000 +0100 @@ -49,6 +49,7 @@ #include #include "test.h" #include "usctest.h" +#include "ipcmsg.h" #define MAXNREPS 1000 #ifndef CONFIG_COLDFIRE @@ -649,26 +650,6 @@ static int get_used_msgqueues() return used_queues; } -/** Get the max number of message queues allowed on system */ -static int get_max_msgqueues() -{ - FILE *f; - char buff[BUFSIZE]; - - /* Get the max number of message queues allowed on system */ - f = fopen("/proc/sys/kernel/msgmni", "r"); - if (!f){ - tst_resm(TBROK,"Could not open /proc/sys/kernel/msgmni"); - tst_exit(); - } - if (!fgets(buff, BUFSIZE, f)) { - tst_resm(TBROK,"Could not read /proc/sys/kernel/msgmni"); - tst_exit(); - } - fclose(f); - return atoi(buff); -} - /*************************************************************** * setup() - performs all ONE TIME setup for this test. *****************************************************************/ @@ -689,12 +670,11 @@ setup() */ TEST_PAUSE; - MSGMNI = get_max_msgqueues() - get_used_msgqueues(); + MSGMNI = MAX_MSGQUEUES - get_used_msgqueues(); if (MSGMNI <= 0){ tst_resm(TBROK,"Max number of message queues already used, cannot create more."); cleanup(); } - } Index: ltp-full-20080131/testcases/kernel/syscalls/ipc/lib/ipcmsg.h =================================================================== --- ltp-full-20080131.orig/testcases/kernel/syscalls/ipc/lib/ipcmsg.h 2005-12-22 21:18:23.000000000 +0100 +++ ltp-full-20080131/testcases/kernel/syscalls/ipc/lib/ipcmsg.h 2008-02-19 18:51:38.000000000 +0100 @@ -41,6 +41,8 @@ void setup(void); #define MSGSIZE 1024 /* a resonable size for a message */ #define MSGTYPE 1 /* a type ID for a message */ +#define MAX_MSGQUEUES 16 /* MSGMNI as defined in linux/msg.h */ + typedef struct mbuf { /* a generic message structure */ long mtype; char mtext[MSGSIZE + 1]; /* add 1 here so the message can be 1024 */ Index: ltp-full-20080131/testcases/kernel/syscalls/ipc/lib/Makefile =================================================================== --- ltp-full-20080131.orig/testcases/kernel/syscalls/ipc/lib/Makefile 2006-08-21 08:58:39.000000000 +0200 +++ ltp-full-20080131/testcases/kernel/syscalls/ipc/lib/Makefile 2008-02-19 18:50:19.000000000 +0100 @@ -19,6 +19,7 @@ SRCS = libipc.c OBJS = $(SRCS:.c=.o) LIBIPC = ../libipc.a +LIBIPC_HEADERS = ipcmsg.h ipcsem.h CFLAGS += -I../../../../../include -Wall @@ -27,6 +28,8 @@ all: $(LIBIPC) $(LIBIPC): $(OBJS) $(AR) -rc $@ $(OBJS) +$(OBJS): $(LIBIPC_HEADERS) + install: clean: Index: ltp-full-20080131/testcases/kernel/syscalls/ipc/msgctl/Makefile =================================================================== --- ltp-full-20080131.orig/testcases/kernel/syscalls/ipc/msgctl/Makefile 2006-08-23 07:46:27.000000000 +0200 +++ ltp-full-20080131/testcases/kernel/syscalls/ipc/msgctl/Makefile 2008-02-19 19:02:26.000000000 +0100 @@ -18,12 +18,15 @@ CFLAGS += -I../lib -I../../../../../include -Wall LDLIBS += -L../../../../../lib -lltp -L.. -lipc +LIBIPC_HEADERS = ../lib/ipcmsg.h SRCS = $(wildcard *.c) TARGETS = $(patsubst %.c,%,$(SRCS)) all: $(TARGETS) +$(TARGETS): $(LIBIPC_HEADERS) + install: @set -e; for i in $(TARGETS); do ln -f $$i ../../../../bin/$$i ; done