aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2003-03-03 19:53:27 +0000
committerUlrich Drepper <drepper@redhat.com>2003-03-03 19:53:27 +0000
commit625f22fc7f8e0d61e3e6cff2c65468b91dbad426 (patch)
tree2fb41fbb7b3fdd78fdaab5915d8621aa2f4ad7df
parent71502ebe1abb598545431a5cfcf06db52585656e (diff)
downloadglibc-625f22fc7f8e0d61e3e6cff2c65468b91dbad426.tar
glibc-625f22fc7f8e0d61e3e6cff2c65468b91dbad426.tar.gz
glibc-625f22fc7f8e0d61e3e6cff2c65468b91dbad426.tar.bz2
glibc-625f22fc7f8e0d61e3e6cff2c65468b91dbad426.zip
Update.
2003-03-03 Ian Wienand <ianw@gelato.unsw.edu.au> * sysdeps/unix/sysv/linux/ia64/clone2.S: Update to take extra clone flags. * include/sched.h: Update clone2 prototype.
-rw-r--r--ChangeLog6
-rw-r--r--include/sched.h5
-rw-r--r--sysdeps/unix/sysv/linux/ia64/clone2.S11
3 files changed, 18 insertions, 4 deletions
diff --git a/ChangeLog b/ChangeLog
index b4269a2fec..9dda58794d 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2003-03-03 Ian Wienand <ianw@gelato.unsw.edu.au>
+
+ * sysdeps/unix/sysv/linux/ia64/clone2.S: Update to take extra clone
+ flags.
+ * include/sched.h: Update clone2 prototype.
+
2003-03-03 Andreas Jaeger <aj@suse.de>
* math/tgmath.h (__TGMATH_UNARY_REAL_RET_ONLY): New definition.
diff --git a/include/sched.h b/include/sched.h
index 291811a6d3..d6cd36f01d 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 90887216c5..2a6593889b 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
;;