mirror of
https://sourceware.org/git/glibc.git
synced 2025-12-24 17:51:17 +03:00
* 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.
This commit is contained in:
@@ -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 ();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user