aboutsummaryrefslogtreecommitdiff
path: root/nptl/sysdeps/unix/sysv/linux/i386
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2003-06-05 19:31:57 +0000
committerUlrich Drepper <drepper@redhat.com>2003-06-05 19:31:57 +0000
commit4ad0bbf4fa2073b8b2cb81866f68ff3e8c503174 (patch)
tree3b1ca4ddea994a1978a4c1b1a791f8458cce706d /nptl/sysdeps/unix/sysv/linux/i386
parentb558fd3ab7b8d9d98b7babc51da7de109f69a77e (diff)
downloadglibc-4ad0bbf4fa2073b8b2cb81866f68ff3e8c503174.tar
glibc-4ad0bbf4fa2073b8b2cb81866f68ff3e8c503174.tar.gz
glibc-4ad0bbf4fa2073b8b2cb81866f68ff3e8c503174.tar.bz2
glibc-4ad0bbf4fa2073b8b2cb81866f68ff3e8c503174.zip
Update.
2003-06-05 Ulrich Drepper <drepper@redhat.com> * sysdeps/unix/sysv/linux/i386/bits/pthreadtypes.h (pthread_rwlock_t): Change type of __writer element to int. * sysdeps/unix/sysv/linux/ia64/bits/pthreadtypes.h: Likewise. * sysdeps/unix/sysv/linux/powerpc/bits/pthreadtypes.h: Likewise. * sysdeps/unix/sysv/linux/powerpc/bits/pthreadtypes.h: Likewise. * sysdeps/unix/sysv/linux/s390/bits/pthreadtypes.h: Likewise. * sysdeps/unix/sysv/linux/x86_64/bits/pthreadtypes.h: Likewise. * sysdeps/i386/tcb-offsets.sym: Replace SELF entry with TID entry. * sysdeps/x86_64/tcb-offsets.sym: Likewise. * pthread_rwlock_trywrlock.c: Store TID not self pointer in __writer. Compare with TID to determine deadlocks. * sysdeps/pthread/pthread_rwlock_rdlock.c: Likewise. * sysdeps/pthread/pthread_rwlock_timedrdlock.c: Likewise. * sysdeps/pthread/pthread_rwlock_timedwrlock.: Likewise. * sysdeps/pthread/pthread_rwlock_wrlock.c: Likewise. * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_rdlock.S: Likewise. * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedrdlock.S: Likewise. * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedwrlock.S: Likewise. * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_wrlock.S: Likewise. * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_rdlock.S: Likewise. * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedrdlock.S: Likewise. * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedwrlock.S: Likewise. * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_wrlock.S: Likewise. * Makefile (tests): Add tst-rwlock12. * tst-rwlock12.c: New file.
Diffstat (limited to 'nptl/sysdeps/unix/sysv/linux/i386')
-rw-r--r--nptl/sysdeps/unix/sysv/linux/i386/bits/pthreadtypes.h2
-rw-r--r--nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_rdlock.S2
-rw-r--r--nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedrdlock.S2
-rw-r--r--nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedwrlock.S4
-rw-r--r--nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_wrlock.S4
5 files changed, 7 insertions, 7 deletions
diff --git a/nptl/sysdeps/unix/sysv/linux/i386/bits/pthreadtypes.h b/nptl/sysdeps/unix/sysv/linux/i386/bits/pthreadtypes.h
index 4b0f11adc5..256589da0d 100644
--- a/nptl/sysdeps/unix/sysv/linux/i386/bits/pthreadtypes.h
+++ b/nptl/sysdeps/unix/sysv/linux/i386/bits/pthreadtypes.h
@@ -115,7 +115,7 @@ typedef union
/* FLAGS must stay at this position in the structure to maintain
binary compatibility. */
unsigned int __flags;
- pthread_t __writer;
+ int __writer;
} __data;
char __size[__SIZEOF_PTHREAD_RWLOCK_T];
long int __align;
diff --git a/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_rdlock.S b/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_rdlock.S
index 6c8dca55a2..81d9766056 100644
--- a/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_rdlock.S
+++ b/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_rdlock.S
@@ -124,7 +124,7 @@ __pthread_rwlock_rdlock:
call __lll_mutex_lock_wait
jmp 2b
-14: cmpl %gs:SELF, %eax
+14: cmpl %gs:TID, %eax
jne 3b
/* Deadlock detected. */
movl $EDEADLK, %ecx
diff --git a/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedrdlock.S b/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedrdlock.S
index 3ebe2a55f8..7d9aa93ebb 100644
--- a/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedrdlock.S
+++ b/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedrdlock.S
@@ -165,7 +165,7 @@ pthread_rwlock_timedrdlock:
call __lll_mutex_lock_wait
jmp 2b
-14: cmpl %gs:SELF, %eax
+14: cmpl %gs:TID, %eax
jne 3b
movl $EDEADLK, %ecx
jmp 9b
diff --git a/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedwrlock.S b/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedwrlock.S
index 9614f24cb2..4a144453fa 100644
--- a/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedwrlock.S
+++ b/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedwrlock.S
@@ -135,7 +135,7 @@ pthread_rwlock_timedwrlock:
5: xorl %ecx, %ecx
- movl %gs:SELF, %eax
+ movl %gs:TID, %eax
movl %eax, WRITER(%ebp)
9: LOCK
#if MUTEX == 0
@@ -163,7 +163,7 @@ pthread_rwlock_timedwrlock:
call __lll_mutex_lock_wait
jmp 2b
-14: cmpl %gs:SELF, %eax
+14: cmpl %gs:TID, %eax
jne 3b
20: movl $EDEADLK, %ecx
jmp 9b
diff --git a/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_wrlock.S b/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_wrlock.S
index 0b1cc28986..28c24bad65 100644
--- a/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_wrlock.S
+++ b/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_wrlock.S
@@ -97,7 +97,7 @@ __pthread_rwlock_wrlock:
jmp 2b
5: xorl %ecx, %ecx
- movl %gs:SELF, %eax
+ movl %gs:TID, %eax
movl %eax, WRITER(%ebx)
9: LOCK
#if MUTEX == 0
@@ -122,7 +122,7 @@ __pthread_rwlock_wrlock:
call __lll_mutex_lock_wait
jmp 2b
-14: cmpl %gs:SELF, %eax
+14: cmpl %gs:TID , %eax
jne 3b
movl $EDEADLK, %ecx
jmp 9b