Code shamelessly taken from clone01 test

Signed-off-by: Jiri Palecek <[email protected]>
---
 .../kernel/controllers/cgroup/clone_platform.h     |   34 ++++++++++++++++++++
 testcases/kernel/controllers/cgroup/test_6_2.c     |   12 ++++++-
 2 files changed, 45 insertions(+), 1 deletions(-)
 create mode 100644 testcases/kernel/controllers/cgroup/clone_platform.h

diff --git a/testcases/kernel/controllers/cgroup/clone_platform.h 
b/testcases/kernel/controllers/cgroup/clone_platform.h
new file mode 100644
index 0000000..1785dd1
--- /dev/null
+++ b/testcases/kernel/controllers/cgroup/clone_platform.h
@@ -0,0 +1,34 @@
+/*
+ * Copyright (c) 2003 Silicon Graphics, Inc.  All Rights Reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of version 2 of the GNU General Public License as
+ * published by the Free Software Foundation.
+ *
+ * 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.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write the Free Software Foundation, Inc., 59
+ * Temple Place - Suite 330, Boston MA 02111-1307, USA.
+ *
+ */
+/* Common platform specific defines for the clone system call tests */
+
+//#define CHILD_STACK_SIZE 8192
+#define CHILD_STACK_SIZE 16384
+
+#if defined (__s390__) || (__s390x__)
+#define clone __clone
+extern int __clone(int(void*),void*,int,void*);
+#elif defined(__ia64__)
+#define clone2 __clone2
+/* Prototype provided by David Mosberger                               */
+/* int  __clone2(int (*fn) (void *arg), void *child_stack_base,                
*/
+/*             size_t child_stack_size, int flags, void *arg,          */
+/*             pid_t *parent_tid, void *tls, pid_t *child_tid)         */
+extern int  __clone2(int (*fn) (void *arg), void *child_stack_base, 
+               size_t child_stack_size, int flags, void *arg, 
+               pid_t *parent_tid, void *tls, pid_t *child_tid); 
+#endif
diff --git a/testcases/kernel/controllers/cgroup/test_6_2.c 
b/testcases/kernel/controllers/cgroup/test_6_2.c
index e5bddb2..79f5c20 100644
--- a/testcases/kernel/controllers/cgroup/test_6_2.c
+++ b/testcases/kernel/controllers/cgroup/test_6_2.c
@@ -24,6 +24,8 @@
 #include <unistd.h>
 #include <sched.h>
 
+#include "clone_platform.h"
+
 #define DEFAULT_USEC   30000
 
 int foo(void __attribute__((unused)) *arg)
@@ -42,7 +44,15 @@ int main(int argc, char **argv)
 
        while (1) {
                usleep(usec);
-               clone(foo, stack+4096, CLONE_NEWNS, NULL);
+#if defined(__hppa__)
+               clone(foo, stack, CLONE_NEWNS, NULL);
+#elif defined(__ia64__)
+               clone2(foo, stack,
+                           4096, CLONE_NEWNS, NULL, NULL, NULL, NULL);
+#else
+               clone
+                    (foo, stack + 4096, CLONE_NEWNS, NULL);
+#endif
        }
 
        return 0;
-- 
1.6.3.1




------------------------------------------------------------------------------
Are you an open source citizen? Join us for the Open Source Bridge conference!
Portland, OR, June 17-19. Two days of sessions, one day of unconference: $250.
Need another reason to go? 24-hour hacker lounge. Register today!
http://ad.doubleclick.net/clk;215844324;13503038;v?http://opensourcebridge.org
_______________________________________________
Ltp-list mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ltp-list

Reply via email to