clone.c raw

   1  #define _GNU_SOURCE
   2  #include <stdarg.h>
   3  #include <unistd.h>
   4  #include <sched.h>
   5  #include "pthread_impl.h"
   6  #include "syscall.h"
   7  
   8  int clone(int (*func)(void *), void *stack, int flags, void *arg, ...)
   9  {
  10  	va_list ap;
  11  	pid_t *ptid, *ctid;
  12  	void  *tls;
  13  
  14  	va_start(ap, arg);
  15  	ptid = va_arg(ap, pid_t *);
  16  	tls  = va_arg(ap, void *);
  17  	ctid = va_arg(ap, pid_t *);
  18  	va_end(ap);
  19  
  20  	return __syscall_ret(__clone(func, stack, flags, arg, ptid, tls, ctid));
  21  }
  22