[PATCH 7/9] user-cr: remove x86_32 clone_with_pids

Nathan Lynch ntl at pobox.com
Tue Nov 17 16:55:44 PST 2009


Remove support code for old clone_with_pids interface and update
comments accordingly.

Signed-off-by: Nathan Lynch <ntl at pobox.com>
---
 clone_x86_32.c |   64 +------------------------------------------------------
 1 files changed, 2 insertions(+), 62 deletions(-)

diff --git a/clone_x86_32.c b/clone_x86_32.c
index 61b593c..6f1d891 100644
--- a/clone_x86_32.c
+++ b/clone_x86_32.c
@@ -1,5 +1,5 @@
 /*
- *  clone_x86_32.c: support for clone_with_pid() on x86_32
+ *  clone_x86_32.c: support for eclone() on x86_32
  *
  *  Copyright (C) Oren Laadan <orenl at cs.columbia.edu>
  *
@@ -17,70 +17,10 @@
 #include <asm/unistd.h>
 
 /*
- * libc doesn't support clone_with_pid() yet...
+ * libc doesn't support eclone() yet...
  * below is arch-dependent code to use the syscall
  */
 #include <linux/checkpoint.h>
-#if defined(__NR_clone_with_pids)
-
-/* this really belongs to some kernel header ! */
-struct pid_set {
-	int num_pids;
-	pid_t *pids;
-};
-
-/* (see: http://lkml.indiana.edu/hypermail/linux/kernel/9604.3/0204.html) */
-int clone_with_pids(int (*fn)(void *), void *child_stack, int flags,
-		    struct pid_set *target_pids, void *arg)
-{
-	long retval;
-	void **newstack;
-
-	/*
-	 * Set up the stack for child:
-	 *  - the (void *) arg will be the argument for the child function
-	 *  - the fn pointer will be loaded into ebx after the clone
-	 */
-	newstack = (void **) child_stack;
-	*--newstack = arg;
-	*--newstack = fn;
-
-	__asm__  __volatile__(
-		 "movl %0, %%ebx\n\t"		/* flags -> 1st (ebx) */
-		 "movl %1, %%ecx\n\t"		/* newstack -> 2nd (ecx)*/
-		 "xorl %%edi, %%edi\n\t"	/* 0 -> 3rd (edi) */
-		 "xorl %%edx, %%edx\n\t"	/* 0 -> 4th (edx) */
-		 "pushl %%ebp\n\t"		/* save value of ebp */
-		 "movl %2, %%ebp\n\t"		/* flags -> 6th (ebp) */
-		:
-		:"b" (flags),
-		 "c" (newstack),
-		 "r" (target_pids)
-		);
-
-	__asm__ __volatile__(
-		 "int $0x80\n\t"	/* Linux/i386 system call */
-		 "testl %0,%0\n\t"	/* check return value */
-		 "jne 1f\n\t"		/* jump if parent */
-		 "popl %%ebx\n\t"	/* get subthread function */
-		 "call *%%ebx\n\t"	/* start subthread function */
-		 "movl %2,%0\n\t"
-		 "int $0x80\n"		/* exit system call: exit subthread */
-		 "1:\n\t"
-		 "popl %%ebp\t"		/* restore parent's ebp */
-		:"=a" (retval)
-		:"0" (__NR_clone_with_pids), "i" (__NR_exit)
-		:"ebx", "ecx"
-		);
-
-	if (retval < 0) {
-		errno = -retval;
-		retval = -1;
-	}
-	return retval;
-}
-
-#endif
 
 #include "eclone.h"
 
-- 
1.6.2.5



More information about the Containers mailing list