From 625f22fc7f8e0d61e3e6cff2c65468b91dbad426 Mon Sep 17 00:00:00 2001 From: Ulrich Drepper Date: Mon, 3 Mar 2003 19:53:27 +0000 Subject: [PATCH] Update. 2003-03-03 Ian Wienand * sysdeps/unix/sysv/linux/ia64/clone2.S: Update to take extra clone flags. * include/sched.h: Update clone2 prototype. --- ChangeLog | 6 ++++++ include/sched.h | 5 ++++- sysdeps/unix/sysv/linux/ia64/clone2.S | 11 ++++++++--- 3 files changed, 18 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index b4269a2..9dda587 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2003-03-03 Ian Wienand + + * sysdeps/unix/sysv/linux/ia64/clone2.S: Update to take extra clone + flags. + * include/sched.h: Update clone2 prototype. + 2003-03-03 Andreas Jaeger * math/tgmath.h (__TGMATH_UNARY_REAL_RET_ONLY): New definition. diff --git a/include/sched.h b/include/sched.h index 291811a..d6cd36f 100644 --- a/include/sched.h +++ b/include/sched.h @@ -15,8 +15,11 @@ extern int __sched_get_priority_min (int __algorithm); extern int __sched_rr_get_interval (__pid_t __pid, struct timespec *__t); /* These are Linux specific. */ +struct user_desc; extern int __clone (int (*__fn) (void *__arg), void *__child_stack, int __flags, void *__arg, ...); extern int __clone2 (int (*__fn) (void *__arg), void *__child_stack_base, - size_t __child_stack_size, int __flags, void *__arg); + size_t __child_stack_size, int __flags, void *__arg, + __pid_t *__child_tid, __pid_t *__parent_tid, + struct user_desc *__tls); #endif diff --git a/sysdeps/unix/sysv/linux/ia64/clone2.S b/sysdeps/unix/sysv/linux/ia64/clone2.S index 9088721..2a65938 100644 --- a/sysdeps/unix/sysv/linux/ia64/clone2.S +++ b/sysdeps/unix/sysv/linux/ia64/clone2.S @@ -1,4 +1,4 @@ -/* Copyright (C) 2000, 2001 Free Software Foundation, Inc. +/* Copyright (C) 2000, 2001, 2003 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -22,10 +22,12 @@ /* int __clone2(int (*fn) (void *arg), void *child_stack_base, */ -/* size_t child_stack_size, int flags, void *arg) */ +/* size_t child_stack_size, int flags, void *arg, */ +/* pid_t *child_tid, pid_t *parent_tid, */ +/* struct user_desc *tls) */ ENTRY(__clone2) - alloc r2=ar.pfs,5,2,3,0 + alloc r2=ar.pfs,8,2,6,0 cmp.eq p6,p0=0,in0 mov r8=EINVAL (p6) br.cond.spnt.few __syscall_error @@ -41,6 +43,9 @@ ENTRY(__clone2) mov out0=in3 /* Flags are first syscall argument. */ mov out1=in1 /* Stack address. */ mov out2=in2 /* Stack size. */ + mov out3=in5 /* Child TID Pointer */ + mov out4=in6 /* Parent TID Pointer */ + mov out5=in7 /* TLS pointer */ DO_CALL (SYS_ify (clone2)) cmp.eq p6,p0=-1,r10 ;; -- 2.7.4