aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRoland McGrath <roland@gnu.org>2003-03-12 10:30:26 +0000
committerRoland McGrath <roland@gnu.org>2003-03-12 10:30:26 +0000
commit0bb2ac85a6abdb035b9fb5daa66b6f8df1957e8b (patch)
tree480bb5994b14a4e5b20001d4bd208112183c010d
parent326132dbdba5be889b8f97430779ea15c9b90ce1 (diff)
downloadglibc-0bb2ac85a6abdb035b9fb5daa66b6f8df1957e8b.tar
glibc-0bb2ac85a6abdb035b9fb5daa66b6f8df1957e8b.tar.gz
glibc-0bb2ac85a6abdb035b9fb5daa66b6f8df1957e8b.tar.bz2
glibc-0bb2ac85a6abdb035b9fb5daa66b6f8df1957e8b.zip
* pthread-errnos.sym: New file.
* Makefile (gen-as-const-headers): New variable, list that file. * sysdeps/unix/sysv/linux/i386/i486/sem_wait.S: Include generated header <pthread-errnos.h> instead of defining errno values here. * sysdeps/unix/sysv/linux/i386/i486/sem_trywait.S: Likewise. * sysdeps/unix/sysv/linux/i386/i486/sem_timedwait.S: Likewise. * sysdeps/unix/sysv/linux/i386/i486/sem_post.S: Likewise. * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_wrlock.S: Likewise. * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedwrlock.S: Likewise. * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedrdlock.S: Likewise. * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_rdlock.S: Likewise. * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S: Likewise. * sysdeps/unix/sysv/linux/i386/i486/lowlevelmutex.S: Likewise. * sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S: Likewise. * sysdeps/unix/sysv/linux/x86_64/sem_wait.S: Likewise. * sysdeps/unix/sysv/linux/x86_64/sem_trywait.S: Likewise. * sysdeps/unix/sysv/linux/x86_64/sem_timedwait.S: Likewise. * sysdeps/unix/sysv/linux/x86_64/sem_post.S: Likewise. * sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S: Likewise. * sysdeps/unix/sysv/linux/x86_64/lowlevelmutex.S: Likewise. * sysdeps/unix/sysv/linux/x86_64/lowlevellock.S: Likewise. * sysdeps/unix/sysv/linux/sh/sem_trywait.S: Likewise. * sysdeps/unix/sysv/linux/sh/sem_timedwait.S: Likewise. * sysdeps/unix/sysv/linux/sh/sem_post.S: Likewise. * sysdeps/unix/sysv/linux/sh/sem_wait.S: Likewise. * sysdeps/unix/sysv/linux/sh/pthread_rwlock_wrlock.S: Likewise. * sysdeps/unix/sysv/linux/sh/pthread_rwlock_timedwrlock.S: Likewise. * sysdeps/unix/sysv/linux/sh/pthread_rwlock_timedrdlock.S: Likewise. * sysdeps/unix/sysv/linux/sh/pthread_cond_timedwait.S: Likewise. * sysdeps/unix/sysv/linux/sh/pthread_rwlock_rdlock.S: Likewise. * sysdeps/unix/sysv/linux/sh/lowlevellock.S: Likewise. * sysdeps/unix/sysv/linux/sh/lowlevelmutex.S: Likewise. * sysdeps/i386/i486/pthread_spin_trylock.S: Likewise. * sysdeps/x86_64/pthread_spin_trylock.S: Likewise. * sysdeps/sh/pthread_spin_trylock.S: Likewise. * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_rdlock.S: Likewise. * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_wrlock.S: Likewise. * sysdeps/unix/sysv/linux/fork.c: Add an assert to check that CLONE_CHILD_SETTID worked.
-rw-r--r--nptl/ChangeLog45
-rw-r--r--nptl/Makefile2
-rw-r--r--nptl/sysdeps/unix/sysv/linux/fork.c8
-rw-r--r--nptl/sysdeps/unix/sysv/linux/sh/lowlevelmutex.S5
-rw-r--r--nptl/sysdeps/unix/sysv/linux/sh/sem_wait.S7
5 files changed, 56 insertions, 11 deletions
diff --git a/nptl/ChangeLog b/nptl/ChangeLog
index 5a593c095e..952f2737aa 100644
--- a/nptl/ChangeLog
+++ b/nptl/ChangeLog
@@ -1,3 +1,48 @@
+2003-03-12 Roland McGrath <roland@redhat.com>
+
+ * pthread-errnos.sym: New file.
+ * Makefile (gen-as-const-headers): New variable, list that file.
+ * sysdeps/unix/sysv/linux/i386/i486/sem_wait.S: Include generated
+ header <pthread-errnos.h> instead of defining errno values here.
+ * sysdeps/unix/sysv/linux/i386/i486/sem_trywait.S: Likewise.
+ * sysdeps/unix/sysv/linux/i386/i486/sem_timedwait.S: Likewise.
+ * sysdeps/unix/sysv/linux/i386/i486/sem_post.S: Likewise.
+ * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_wrlock.S: Likewise.
+ * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedwrlock.S:
+ Likewise.
+ * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedrdlock.S:
+ Likewise.
+ * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_rdlock.S: Likewise.
+ * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S: Likewise.
+ * sysdeps/unix/sysv/linux/i386/i486/lowlevelmutex.S: Likewise.
+ * sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S: Likewise.
+ * sysdeps/unix/sysv/linux/x86_64/sem_wait.S: Likewise.
+ * sysdeps/unix/sysv/linux/x86_64/sem_trywait.S: Likewise.
+ * sysdeps/unix/sysv/linux/x86_64/sem_timedwait.S: Likewise.
+ * sysdeps/unix/sysv/linux/x86_64/sem_post.S: Likewise.
+ * sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S: Likewise.
+ * sysdeps/unix/sysv/linux/x86_64/lowlevelmutex.S: Likewise.
+ * sysdeps/unix/sysv/linux/x86_64/lowlevellock.S: Likewise.
+ * sysdeps/unix/sysv/linux/sh/sem_trywait.S: Likewise.
+ * sysdeps/unix/sysv/linux/sh/sem_timedwait.S: Likewise.
+ * sysdeps/unix/sysv/linux/sh/sem_post.S: Likewise.
+ * sysdeps/unix/sysv/linux/sh/sem_wait.S: Likewise.
+ * sysdeps/unix/sysv/linux/sh/pthread_rwlock_wrlock.S: Likewise.
+ * sysdeps/unix/sysv/linux/sh/pthread_rwlock_timedwrlock.S: Likewise.
+ * sysdeps/unix/sysv/linux/sh/pthread_rwlock_timedrdlock.S: Likewise.
+ * sysdeps/unix/sysv/linux/sh/pthread_cond_timedwait.S: Likewise.
+ * sysdeps/unix/sysv/linux/sh/pthread_rwlock_rdlock.S: Likewise.
+ * sysdeps/unix/sysv/linux/sh/lowlevellock.S: Likewise.
+ * sysdeps/unix/sysv/linux/sh/lowlevelmutex.S: Likewise.
+ * sysdeps/i386/i486/pthread_spin_trylock.S: Likewise.
+ * sysdeps/x86_64/pthread_spin_trylock.S: Likewise.
+ * sysdeps/sh/pthread_spin_trylock.S: Likewise.
+ * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_rdlock.S: Likewise.
+ * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_wrlock.S: Likewise.
+
+ * sysdeps/unix/sysv/linux/fork.c: Add an assert to check that
+ CLONE_CHILD_SETTID worked.
+
2003-03-12 Ulrich Drepper <drepper@redhat.com>
* sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_rdlock.S: New file.
diff --git a/nptl/Makefile b/nptl/Makefile
index b59ffd86bb..656e0c48a2 100644
--- a/nptl/Makefile
+++ b/nptl/Makefile
@@ -144,7 +144,7 @@ tests = tst-attr1 tst-attr2 \
tst-eintr1 \
tst-tsd1 tst-tsd2 \
tst-tls1 tst-tls2 \
- tst-fork1 tst-fork2 tst-fork3 tst-fork4 \
+ tst-fork1 tst-fork2 tst-fork3 \
tst-atfork1 \
tst-cancel1 tst-cancel2 tst-cancel3 tst-cancel4 tst-cancel5 \
tst-cancel6 tst-cancel7 tst-cancel8 tst-cancel9 tst-cancel10 \
diff --git a/nptl/sysdeps/unix/sysv/linux/fork.c b/nptl/sysdeps/unix/sysv/linux/fork.c
index eba28064ea..e75f9d51da 100644
--- a/nptl/sysdeps/unix/sysv/linux/fork.c
+++ b/nptl/sysdeps/unix/sysv/linux/fork.c
@@ -25,6 +25,7 @@
#include <tls.h>
#include "fork.h"
#include <bits/stdio-lock.h>
+#include <assert.h>
unsigned long int *__fork_generation_pointer;
@@ -68,6 +69,8 @@ __libc_fork (void)
_IO_list_lock ();
+ pid_t ppid = THREAD_GETMEM (THREAD_SELF, tid);
+
#ifdef ARCH_FORK
pid = ARCH_FORK ();
#else
@@ -75,8 +78,11 @@ __libc_fork (void)
pid = INLINE_SYSCALL (fork, 0);
#endif
+
if (pid == 0)
{
+ assert (THREAD_GETMEM (THREAD_SELF, tid) != ppid);
+
if (__fork_generation_pointer != NULL)
*__fork_generation_pointer += 4;
@@ -101,6 +107,8 @@ __libc_fork (void)
}
else
{
+ assert (THREAD_GETMEM (THREAD_SELF, tid) == ppid);
+
/* We execute this even if the 'fork' call failed. */
_IO_list_unlock ();
diff --git a/nptl/sysdeps/unix/sysv/linux/sh/lowlevelmutex.S b/nptl/sysdeps/unix/sysv/linux/sh/lowlevelmutex.S
index dd9ac3cf35..6df513cbec 100644
--- a/nptl/sysdeps/unix/sysv/linux/sh/lowlevelmutex.S
+++ b/nptl/sysdeps/unix/sysv/linux/sh/lowlevelmutex.S
@@ -17,6 +17,7 @@
02111-1307 USA. */
#include <sysdep.h>
+#include <pthread-errnos.h>
#include "lowlevel-atomic.h"
.text
@@ -26,10 +27,6 @@
#define FUTEX_WAIT 0
#define FUTEX_WAKE 1
-#define EWOULDBLOCK 11
-#define EINVAL 22
-#define ETIMEDOUT 110
-
.globl __lll_mutex_lock_wait
.type __lll_mutex_lock_wait,@function
diff --git a/nptl/sysdeps/unix/sysv/linux/sh/sem_wait.S b/nptl/sysdeps/unix/sysv/linux/sh/sem_wait.S
index c275f204db..f7bca99fc3 100644
--- a/nptl/sysdeps/unix/sysv/linux/sh/sem_wait.S
+++ b/nptl/sysdeps/unix/sysv/linux/sh/sem_wait.S
@@ -18,6 +18,7 @@
#include <sysdep.h>
#include <shlib-compat.h>
+#include <pthread-errnos.h>
#include "lowlevel-atomic.h"
@@ -26,12 +27,6 @@
#define FUTEX_WAIT 0
#define FUTEX_WAKE 1
-#define EINTR 4
-#define EAGAIN 11
-#define EWOULDBLOCK EAGAIN
-#define EINVAL 22
-#define ETIMEDOUT 110
-
.text
.globl __new_sem_wait