The binary file of msgctl is installed in /opt/ltp/lib/. When execute msgctl,
"pan(23126): execvp of 'msgctl01' (tag msgctl01) failed.  errno:2  No such file 
or directory"
will be outputed.

Signed-off-by: Peng Haitao <[email protected]>
---
 testcases/kernel/syscalls/ipc/Makefile           |    2 +-
 testcases/kernel/syscalls/ipc/lib/Makefile       |    2 +-
 testcases/kernel/syscalls/ipc/lib/libmsgctl.c    |  147 +++++++++++++++++++++
 testcases/kernel/syscalls/ipc/lib/libmsgctl.h    |   39 ++++++
 testcases/kernel/syscalls/ipc/msgctl/Makefile    |   13 +--
 testcases/kernel/syscalls/ipc/msgctl/libmsgctl.c |  148 ----------------------
 testcases/kernel/syscalls/ipc/msgctl/libmsgctl.h |   39 ------
 testcases/kernel/syscalls/ipc/msgctl/msgctl08.c  |    2 +-
 testcases/kernel/syscalls/ipc/msgctl/msgctl09.c  |    2 +-
 testcases/kernel/syscalls/ipc/msgctl/msgctl10.c  |    2 +-
 testcases/kernel/syscalls/ipc/msgctl/msgctl11.c  |    2 +-
 11 files changed, 194 insertions(+), 204 deletions(-)
 create mode 100644 testcases/kernel/syscalls/ipc/lib/libmsgctl.c
 create mode 100644 testcases/kernel/syscalls/ipc/lib/libmsgctl.h
 delete mode 100644 testcases/kernel/syscalls/ipc/msgctl/libmsgctl.c
 delete mode 100644 testcases/kernel/syscalls/ipc/msgctl/libmsgctl.h

diff --git a/testcases/kernel/syscalls/ipc/Makefile 
b/testcases/kernel/syscalls/ipc/Makefile
index 69c6e8c..42492db 100644
--- a/testcases/kernel/syscalls/ipc/Makefile
+++ b/testcases/kernel/syscalls/ipc/Makefile
@@ -22,7 +22,7 @@ include $(top_srcdir)/include/mk/env_pre.mk
 
 LIBDIR                 := lib
 FILTER_OUT_DIRS                := $(LIBDIR)
-LIB                    := $(LIBDIR)/libipc.a
+LIB                    := $(LIBDIR)/libipc.a $(LIBDIR)/libmsgctl.a
 
 $(LIBDIR):
        mkdir -p "$@"
diff --git a/testcases/kernel/syscalls/ipc/lib/Makefile 
b/testcases/kernel/syscalls/ipc/lib/Makefile
index 9de2274..0333d48 100644
--- a/testcases/kernel/syscalls/ipc/lib/Makefile
+++ b/testcases/kernel/syscalls/ipc/lib/Makefile
@@ -20,6 +20,6 @@ top_srcdir            ?= ../../../../..
 
 include $(top_srcdir)/include/mk/env_pre.mk
 
-LIB                    := libipc.a
+LIB                    := libipc.a libmsgctl.a
 
 include $(top_srcdir)/include/mk/lib.mk
diff --git a/testcases/kernel/syscalls/ipc/lib/libmsgctl.c 
b/testcases/kernel/syscalls/ipc/lib/libmsgctl.c
new file mode 100644
index 0000000..ae459d4
--- /dev/null
+++ b/testcases/kernel/syscalls/ipc/lib/libmsgctl.c
@@ -0,0 +1,147 @@
+/*
+ * Copyright (c) International Business Machines  Corp., 2002
+ * Copyright (c) 2013 Oracle and/or its affiliates. All Rights Reserved.
+ *
+ * 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 would 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 the Free Software Foundation,
+ * Inc.,  51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+ */
+
+#include <errno.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/stat.h>
+#include <sys/types.h>
+#include <sys/ipc.h>
+#include <sys/msg.h>
+#include "libmsgctl.h"
+
+int doreader(long key, int tid, long type, int child, int nreps)
+{
+       int i, size;
+       int id;
+       struct mbuffer buffer;
+
+       id = msgget(key, 0);
+       if (id < 0) {
+               printf("msgget() error in the reader of child group %d: %s\n",
+                       child, strerror(errno));
+
+               return FAIL;
+       }
+       if (id != tid) {
+               printf("Message queue mismatch in the reader of child group %d 
for message queue id %d\n",
+                       child, id);
+
+               return FAIL;
+       }
+       for (i = 0; i < nreps; i++) {
+               memset(&buffer, 0, sizeof(buffer));
+
+               size = msgrcv(id, &buffer, 100, type, 0);
+               if (size < 0) {
+                       printf("msgrcv() error in child %d, read # = %d: %s\n",
+                               child, (i + 1), strerror(errno));
+
+                       return FAIL;
+               }
+               if (buffer.type != type) {
+                       printf("Type mismatch in child %d, read #d = %d: ",
+                               child, (i + 1));
+                       printf("for message got %ld, expected - %ld\n",
+                               buffer.type, type);
+
+                       return FAIL;
+               }
+               if (buffer.data.len + 1 != size) {
+                       printf("Size mismatch in child %d, read # = %d: ",
+                               child, (i + 1));
+                       printf("for message got %d, expected - %d\n",
+                               buffer.data.len + 1, size);
+
+                       return FAIL;
+               }
+               if (verify(buffer.data.pbytes, (key % 255), size - 1, child)) {
+                       printf("Verify failed in child %d read # = %d, key = 
%lx\n",
+                               child, (i + 1), key);
+
+                       return FAIL;
+               }
+               key++;
+       }
+       return PASS;
+}
+
+int dowriter(long key, int tid, long type, int child, int nreps)
+{
+       int i, size;
+       int id;
+       struct mbuffer buffer;
+
+       id = msgget(key, 0);
+       if (id < 0) {
+               printf("msgget() error in the writer of child group %d: %s\n",
+                       child, strerror(errno));
+
+               return FAIL;
+       }
+       if (id != tid) {
+               printf("Message queue mismatch in the reader of child group %d 
for message queue id %d\n",
+                       child, id);
+
+               return FAIL;
+       }
+
+       for (i = 0; i < nreps; i++) {
+               memset(&buffer, 0, sizeof(buffer));
+
+               do {
+                       size = (lrand48() % 99);
+               } while (size == 0);
+               fill_buffer(buffer.data.pbytes, (key % 255), size);
+               buffer.data.len = size;
+               buffer.type = type;
+               if (msgsnd(id, &buffer, size + 1, 0) < 0) {
+                       printf("msgsnd() error in child %d, write # = %d, key = 
%lx: %s\n",
+                               child, nreps, key, strerror(errno));
+
+                       return FAIL;
+               }
+               key++;
+       }
+       return PASS;
+}
+
+int fill_buffer(char *buf, char val, int size)
+{
+       int i;
+
+       for (i = 0; i < size; i++)
+               buf[i] = val;
+       return 0;
+}
+
+/* Check a buffer for correct values */
+int verify(char *buf, char val, int size, int child)
+{
+       while (size-- > 0) {
+               if (*buf++ != val) {
+                       printf("Verify error in child %d, *buf = %x, val = %x, 
size = %d\n",
+                               child, *buf, val, size);
+
+                       return FAIL;
+               }
+       }
+       return PASS;
+}
diff --git a/testcases/kernel/syscalls/ipc/lib/libmsgctl.h 
b/testcases/kernel/syscalls/ipc/lib/libmsgctl.h
new file mode 100644
index 0000000..e1afeab
--- /dev/null
+++ b/testcases/kernel/syscalls/ipc/lib/libmsgctl.h
@@ -0,0 +1,39 @@
+/*
+ * Copyright (c) International Business Machines  Corp., 2002
+ * Copyright (c) 2013 Oracle and/or its affiliates. All Rights Reserved.
+ *
+ * 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 would 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 the Free Software Foundation,
+ * Inc.,  51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+ */
+
+#ifndef __LIBMSGCTL_H__
+#define __LIBMSGCTL_H__
+
+#define FAIL   1
+#define PASS   0
+
+struct mbuffer {
+       long type;
+       struct {
+               char len;
+               char pbytes[99];
+       } data;
+};
+
+int doreader(long key, int tid, long type, int child, int nreps);
+int dowriter(long key, int tid, long type, int child, int nreps);
+int fill_buffer(char *buf, char val, int size);
+int verify(char *buf, char val, int size, int child);
+
+#endif /*__LIBMSGCTL_H__ */
diff --git a/testcases/kernel/syscalls/ipc/msgctl/Makefile 
b/testcases/kernel/syscalls/ipc/msgctl/Makefile
index aedfda6..e2396e9 100644
--- a/testcases/kernel/syscalls/ipc/msgctl/Makefile
+++ b/testcases/kernel/syscalls/ipc/msgctl/Makefile
@@ -20,19 +20,10 @@ top_srcdir              ?= ../../../../..
 
 include $(top_srcdir)/include/mk/testcases.mk
 
-LIBSRCS := libmsgctl.c
-INTERNAL_LIB := libmsgctl.a
-
-LDFLAGS += -L$(abs_builddir)
+LIBMSGCTL               := $(LIBDIR)/libmsgctl.a
 LDLIBS += -lmsgctl
 
-MAKE_TARGETS := $(patsubst %.c,%,$(wildcard msgctl??.c))
-MAKE_TARGET_OBJS := $(addsuffix .o,$(MAKE_TARGETS))
-
-$(MAKE_TARGET_OBJS): $(INTERNAL_LIB)
-
-.INTERMEDIATE: $(MAKE_TARGET_OBJS)
+MAKE_DEPS               := $(LIBMSGCTL)
 
 include $(abs_srcdir)/../Makefile.inc
-include $(top_srcdir)/include/mk/lib.mk
 include $(top_srcdir)/include/mk/generic_leaf_target.mk
diff --git a/testcases/kernel/syscalls/ipc/msgctl/libmsgctl.c 
b/testcases/kernel/syscalls/ipc/msgctl/libmsgctl.c
deleted file mode 100644
index fa77b56..0000000
--- a/testcases/kernel/syscalls/ipc/msgctl/libmsgctl.c
+++ /dev/null
@@ -1,148 +0,0 @@
-/*
- * Copyright (c) International Business Machines  Corp., 2002
- * Copyright (c) 2013 Oracle and/or its affiliates. All Rights Reserved.
- *
- * 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 would 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 the Free Software Foundation,
- * Inc.,  51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
- */
-
-#include <errno.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <sys/stat.h>
-#include <sys/types.h>
-#include <sys/ipc.h>
-#include <sys/msg.h>
-#include "libmsgctl.h"
-
-int doreader(long key, int tid, long type, int child, int nreps)
-{
-       int i, size;
-       int id;
-       struct mbuffer buffer;
-
-       id = msgget(key, 0);
-       if (id < 0) {
-               printf("msgget() error in the reader of child group %d: %s\n",
-                       child, strerror(errno));
-
-               return FAIL;
-       }
-       if (id != tid) {
-               printf("Message queue mismatch in the reader of child group %d 
for message queue id %d\n",
-                       child, id);
-
-               return FAIL;
-       }
-       for (i = 0; i < nreps; i++) {
-               memset(&buffer, 0, sizeof(buffer));
-
-               size = msgrcv(id, &buffer, 100, type, 0);
-               if (size < 0) {
-                       printf("msgrcv() error in child %d, read # = %d: %s\n",
-                               child, (i + 1), strerror(errno));
-
-                       return FAIL;
-               }
-               if (buffer.type != type) {
-                       printf("Type mismatch in child %d, read #d = %d: ",
-                               child, (i + 1));
-                       printf("for message got %ld, expected - %ld\n",
-                               buffer.type, type);
-
-                       return FAIL;
-               }
-               if (buffer.data.len + 1 != size) {
-                       printf("Size mismatch in child %d, read # = %d: ",
-                               child, (i + 1));
-                       printf("for message got %d, expected - %d\n",
-                               buffer.data.len + 1, size);
-
-                       return FAIL;
-               }
-               if (verify(buffer.data.pbytes, (key % 255), size - 1, child)) {
-                       printf("Verify failed in child %d read # = %d, key = 
%lx\n",
-                               child, (i + 1), key);
-
-                       return FAIL;
-               }
-               key++;
-       }
-       return PASS;
-}
-
-int dowriter(long key, int tid, long type, int child, int nreps)
-{
-       int i, size;
-       int id;
-       struct mbuffer buffer;
-
-       id = msgget(key, 0);
-       if (id < 0) {
-               printf("msgget() error in the writer of child group %d: %s\n",
-                       child, strerror(errno));
-
-               return FAIL;
-       }
-       if (id != tid) {
-               printf("Message queue mismatch in the reader of child group %d 
for message queue id %d\n",
-                       child, id);
-
-               return FAIL;
-       }
-
-       for (i = 0; i < nreps; i++) {
-               memset(&buffer, 0, sizeof(buffer));
-
-               do {
-                       size = (lrand48() % 99);
-               } while (size == 0);
-               fill_buffer(buffer.data.pbytes, (key % 255), size);
-               buffer.data.len = size;
-               buffer.type = type;
-               if (msgsnd(id, &buffer, size + 1, 0) < 0) {
-                       printf("msgsnd() error in child %d, write # = %d, key = 
%lx: %s\n",
-                               child, nreps, key, strerror(errno));
-
-                       return FAIL;
-               }
-               key++;
-       }
-       return PASS;
-}
-
-int fill_buffer(char *buf, char val, int size)
-{
-       int i;
-
-       for (i = 0; i < size; i++)
-               buf[i] = val;
-       return 0;
-}
-
-/* Check a buffer for correct values */
-int verify(char *buf, char val, int size, int child)
-{
-       while (size-- > 0) {
-               if (*buf++ != val) {
-                       printf("Verify error in child %d, *buf = %x, val = %x, 
size = %d\n",
-                               child, *buf, val, size);
-
-                       return FAIL;
-               }
-       }
-       return PASS;
-}
-
diff --git a/testcases/kernel/syscalls/ipc/msgctl/libmsgctl.h 
b/testcases/kernel/syscalls/ipc/msgctl/libmsgctl.h
deleted file mode 100644
index e1afeab..0000000
--- a/testcases/kernel/syscalls/ipc/msgctl/libmsgctl.h
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Copyright (c) International Business Machines  Corp., 2002
- * Copyright (c) 2013 Oracle and/or its affiliates. All Rights Reserved.
- *
- * 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 would 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 the Free Software Foundation,
- * Inc.,  51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
- */
-
-#ifndef __LIBMSGCTL_H__
-#define __LIBMSGCTL_H__
-
-#define FAIL   1
-#define PASS   0
-
-struct mbuffer {
-       long type;
-       struct {
-               char len;
-               char pbytes[99];
-       } data;
-};
-
-int doreader(long key, int tid, long type, int child, int nreps);
-int dowriter(long key, int tid, long type, int child, int nreps);
-int fill_buffer(char *buf, char val, int size);
-int verify(char *buf, char val, int size, int child);
-
-#endif /*__LIBMSGCTL_H__ */
diff --git a/testcases/kernel/syscalls/ipc/msgctl/msgctl08.c 
b/testcases/kernel/syscalls/ipc/msgctl/msgctl08.c
index 0999059..2d96d8a 100644
--- a/testcases/kernel/syscalls/ipc/msgctl/msgctl08.c
+++ b/testcases/kernel/syscalls/ipc/msgctl/msgctl08.c
@@ -40,7 +40,7 @@
 #include "test.h"
 #include "usctest.h"
 #include "ipcmsg.h"
-#include "libmsgctl.h"
+#include "../lib/libmsgctl.h"
 
 char *TCID = "msgctl08";
 int TST_TOTAL = 1;
diff --git a/testcases/kernel/syscalls/ipc/msgctl/msgctl09.c 
b/testcases/kernel/syscalls/ipc/msgctl/msgctl09.c
index c019226..a41ae88 100644
--- a/testcases/kernel/syscalls/ipc/msgctl/msgctl09.c
+++ b/testcases/kernel/syscalls/ipc/msgctl/msgctl09.c
@@ -38,7 +38,7 @@
 #include "test.h"
 #include "usctest.h"
 #include "ipcmsg.h"
-#include "libmsgctl.h"
+#include "../lib/libmsgctl.h"
 
 char *TCID = "msgctl09";
 int TST_TOTAL = 1;
diff --git a/testcases/kernel/syscalls/ipc/msgctl/msgctl10.c 
b/testcases/kernel/syscalls/ipc/msgctl/msgctl10.c
index 860419f..cfb0ef3 100644
--- a/testcases/kernel/syscalls/ipc/msgctl/msgctl10.c
+++ b/testcases/kernel/syscalls/ipc/msgctl/msgctl10.c
@@ -41,7 +41,7 @@
 #include "test.h"
 #include "usctest.h"
 #include "ipcmsg.h"
-#include "libmsgctl.h"
+#include "../lib/libmsgctl.h"
 
 char *TCID = "msgctl10";
 int TST_TOTAL = 1;
diff --git a/testcases/kernel/syscalls/ipc/msgctl/msgctl11.c 
b/testcases/kernel/syscalls/ipc/msgctl/msgctl11.c
index 9b21df8..57f4ae0 100644
--- a/testcases/kernel/syscalls/ipc/msgctl/msgctl11.c
+++ b/testcases/kernel/syscalls/ipc/msgctl/msgctl11.c
@@ -39,7 +39,7 @@
 #include "test.h"
 #include "usctest.h"
 #include "ipcmsg.h"
-#include "libmsgctl.h"
+#include "../lib/libmsgctl.h"
 #include "system_specific_process_info.h"
 
 char *TCID = "msgctl11";
-- 
1.7.1


------------------------------------------------------------------------------
Rapidly troubleshoot problems before they affect your business. Most IT 
organizations don't have a clear picture of how application performance 
affects their revenue. With AppDynamics, you get 100% visibility into your 
Java,.NET, & PHP application. Start your 15-day FREE TRIAL of AppDynamics Pro!
http://pubads.g.doubleclick.net/gampad/clk?id=84349351&iu=/4140/ostg.clktrk
_______________________________________________
Ltp-list mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ltp-list

Reply via email to