This is the mail archive of the libc-hacker@sources.redhat.com mailing list for the glibc project.
Note that libc-hacker is a closed list. You may look at the archives of this list, but subscription and posting are not open.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
Hi! So far tested outside of glibc tree only (and solely 31 bit). Martin, does this look ok? I'll test it fully in my next automated glibc build. 2004-12-14 Jakub Jelinek <jakub@redhat.com> * sysdeps/unix/sysv/linux/s390/s390-32/clone.S (__clone): Add support for NPTL where the PID is stored at userlevel and needs to be reset when CLONE_THREAD is not used. * sysdeps/unix/sysv/linux/s390/s390-64/clone.S (__clone): Likewise. nptl/ * sysdeps/unix/sysv/linux/s390/s390-32/clone.S: New file. * sysdeps/unix/sysv/linux/s390/s390-64/clone.S: New file. * sysdeps/s390/tcb-offsets.sym (TID): Add. --- libc/sysdeps/unix/sysv/linux/s390/s390-32/clone.S.jj 2004-07-12 17:50:26.000000000 +0200 +++ libc/sysdeps/unix/sysv/linux/s390/s390-32/clone.S 2004-12-14 17:39:17.888568618 +0100 @@ -54,6 +54,18 @@ error: PSEUDO_END (__clone) thread_start: +#ifdef RESET_PID + tmh %r3,1 /* CLONE_THREAD == 0x00010000 */ + jne 1f + lhi %r2,-1 + tml %r3,256 /* CLONE_VM == 0x00000100 */ + jne 2f + svc SYS_ify(getpid) +2: ear %r3,%a0 + st %r2,PID(%r3) + st %r2,TID(%r3) +1: +#endif /* fn is in gpr 1, arg in gpr 0 */ lr %r2,%r0 /* set first parameter to void *arg */ ahi %r15,-96 /* make room on the stack for the save area */ --- libc/sysdeps/unix/sysv/linux/s390/s390-64/clone.S.jj 2004-07-12 17:50:26.000000000 +0200 +++ libc/sysdeps/unix/sysv/linux/s390/s390-64/clone.S 2004-12-14 18:03:24.020208726 +0100 @@ -55,6 +55,20 @@ error: PSEUDO_END (__clone) thread_start: +#ifdef RESET_PID + tmh %r3,1 /* CLONE_THREAD == 0x00010000 */ + jne 1f + lhi %r2,-1 + tml %r3,256 /* CLONE_VM == 0x00000100 */ + jne 2f + svc SYS_ify(getpid) +2: ear %r3,%a0 + sllg %r3,%r3,32 + ear %r3,%a1 + st %r2,PID(%r3) + st %r2,TID(%r3) +1: +#endif /* fn is in gpr 1, arg in gpr 0 */ lgr %r2,%r0 /* set first parameter to void *arg */ aghi %r15,-160 /* make room on the stack for the save area */ --- libc/nptl/sysdeps/unix/sysv/linux/s390/s390-32/clone.S.jj 2004-12-14 17:56:54.715727557 +0100 +++ libc/nptl/sysdeps/unix/sysv/linux/s390/s390-32/clone.S 2004-12-14 17:57:02.301372155 +0100 @@ -0,0 +1,2 @@ +#define RESET_PID +#include <sysdeps/unix/sysv/linux/s390/s390-32/clone.S> --- libc/nptl/sysdeps/unix/sysv/linux/s390/s390-64/clone.S.jj 2004-12-14 17:56:54.000000000 +0100 +++ libc/nptl/sysdeps/unix/sysv/linux/s390/s390-64/clone.S 2004-12-14 18:03:46.223246796 +0100 @@ -0,0 +1,2 @@ +#define RESET_PID +#include <sysdeps/unix/sysv/linux/s390/s390-64/clone.S> --- libc/nptl/sysdeps/s390/tcb-offsets.sym.jj 2004-03-10 20:02:20.000000000 +0100 +++ libc/nptl/sysdeps/s390/tcb-offsets.sym 2004-12-14 17:56:00.412430245 +0100 @@ -3,3 +3,4 @@ MULTIPLE_THREADS_OFFSET offsetof (tcbhead_t, multiple_threads) PID offsetof (struct pthread, pid) +TID offsetof (struct pthread, tid) Jakub
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |