mirror of
https://sourceware.org/git/glibc.git
synced 2025-01-03 00:10:10 +00:00
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.
This commit is contained in:
parent
71502ebe1a
commit
625f22fc7f
@ -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>
|
2003-03-03 Andreas Jaeger <aj@suse.de>
|
||||||
|
|
||||||
* math/tgmath.h (__TGMATH_UNARY_REAL_RET_ONLY): New definition.
|
* math/tgmath.h (__TGMATH_UNARY_REAL_RET_ONLY): New definition.
|
||||||
|
@ -15,8 +15,11 @@ extern int __sched_get_priority_min (int __algorithm);
|
|||||||
extern int __sched_rr_get_interval (__pid_t __pid, struct timespec *__t);
|
extern int __sched_rr_get_interval (__pid_t __pid, struct timespec *__t);
|
||||||
|
|
||||||
/* These are Linux specific. */
|
/* These are Linux specific. */
|
||||||
|
struct user_desc;
|
||||||
extern int __clone (int (*__fn) (void *__arg), void *__child_stack,
|
extern int __clone (int (*__fn) (void *__arg), void *__child_stack,
|
||||||
int __flags, void *__arg, ...);
|
int __flags, void *__arg, ...);
|
||||||
extern int __clone2 (int (*__fn) (void *__arg), void *__child_stack_base,
|
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
|
#endif
|
||||||
|
@ -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.
|
This file is part of the GNU C Library.
|
||||||
|
|
||||||
The GNU C Library is free software; you can redistribute it and/or
|
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, */
|
/* 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)
|
ENTRY(__clone2)
|
||||||
alloc r2=ar.pfs,5,2,3,0
|
alloc r2=ar.pfs,8,2,6,0
|
||||||
cmp.eq p6,p0=0,in0
|
cmp.eq p6,p0=0,in0
|
||||||
mov r8=EINVAL
|
mov r8=EINVAL
|
||||||
(p6) br.cond.spnt.few __syscall_error
|
(p6) br.cond.spnt.few __syscall_error
|
||||||
@ -41,6 +43,9 @@ ENTRY(__clone2)
|
|||||||
mov out0=in3 /* Flags are first syscall argument. */
|
mov out0=in3 /* Flags are first syscall argument. */
|
||||||
mov out1=in1 /* Stack address. */
|
mov out1=in1 /* Stack address. */
|
||||||
mov out2=in2 /* Stack size. */
|
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))
|
DO_CALL (SYS_ify (clone2))
|
||||||
cmp.eq p6,p0=-1,r10
|
cmp.eq p6,p0=-1,r10
|
||||||
;;
|
;;
|
||||||
|
Loading…
Reference in New Issue
Block a user