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 <Nadia.Derbey@bull.net>
diff --git a/testcases/kernel/syscalls/ipc/lib/Makefile b/testcases/kernel/syscalls/ipc/lib/Makefile
index 0ade066..b573e71 100644
--- a/testcases/kernel/syscalls/ipc/lib/Makefile
+++ b/testcases/kernel/syscalls/ipc/lib/Makefile
@@ -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 @@
$(LIBIPC): $(OBJS)
$(AR) -rc $@ $(OBJS)
+$(OBJS): $(LIBIPC_HEADERS)
+
install:
clean:
diff --git a/testcases/kernel/syscalls/ipc/lib/ipcmsg.h b/testcases/kernel/syscalls/ipc/lib/ipcmsg.h
index 4265afd..f745b62 100644
--- a/testcases/kernel/syscalls/ipc/lib/ipcmsg.h
+++ b/testcases/kernel/syscalls/ipc/lib/ipcmsg.h
@@ -41,6 +41,8 @@
#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 */
diff --git a/testcases/kernel/syscalls/ipc/msgctl/Makefile b/testcases/kernel/syscalls/ipc/msgctl/Makefile
index 9071354..bed470c 100644
--- a/testcases/kernel/syscalls/ipc/msgctl/Makefile
+++ b/testcases/kernel/syscalls/ipc/msgctl/Makefile
@@ -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
diff --git a/testcases/kernel/syscalls/ipc/msgctl/msgctl08.c b/testcases/kernel/syscalls/ipc/msgctl/msgctl08.c
index 609ac50..ce62d49 100644
--- a/testcases/kernel/syscalls/ipc/msgctl/msgctl08.c
+++ b/testcases/kernel/syscalls/ipc/msgctl/msgctl08.c
@@ -50,6 +50,7 @@
#include <sys/msg.h>
#include "test.h"
#include "usctest.h"
+#include "ipcmsg.h"
void setup();
void cleanup();
@@ -479,26 +480,6 @@
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 @@
*/
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();
diff --git a/testcases/kernel/syscalls/ipc/msgctl/msgctl09.c b/testcases/kernel/syscalls/ipc/msgctl/msgctl09.c
index ec36e8a..017b917 100644
--- a/testcases/kernel/syscalls/ipc/msgctl/msgctl09.c
+++ b/testcases/kernel/syscalls/ipc/msgctl/msgctl09.c
@@ -49,6 +49,7 @@
#include <unistd.h>
#include "test.h"
#include "usctest.h"
+#include "ipcmsg.h"
#define MAXNREPS 1000
#ifndef CONFIG_COLDFIRE
@@ -649,26 +650,6 @@
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 @@
*/
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();
}
-
}