mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-28 04:03:35 +08:00
Update.
2003-12-11 Ulrich Drepper <drepper@redhat.com> * sysdeps/unix/sysv/linux/i386/lowlevellock.h (lll_futex_wait): Assume parameter is a pointer. (lll_futex_wake): Likewise. Reported by Boris Hu. * sysdeps/unix/sysv/linux/unregister-atfork.c (__unregister_atfork): Pass pointer to refcntr to lll_futex_wait. * sysdeps/unix/sysv/linux/sem_wait.c (__new_sem_wait): Simplify a bit.
This commit is contained in:
parent
1d9d0b80d1
commit
ff48874d6a
@ -1,3 +1,14 @@
|
||||
2003-12-11 Ulrich Drepper <drepper@redhat.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/i386/lowlevellock.h (lll_futex_wait):
|
||||
Assume parameter is a pointer.
|
||||
(lll_futex_wake): Likewise.
|
||||
Reported by Boris Hu.
|
||||
* sysdeps/unix/sysv/linux/unregister-atfork.c
|
||||
(__unregister_atfork): Pass pointer to refcntr to lll_futex_wait.
|
||||
|
||||
* sysdeps/unix/sysv/linux/sem_wait.c (__new_sem_wait): Simplify a bit.
|
||||
|
||||
2003-12-10 Ulrich Drepper <drepper@redhat.com>
|
||||
|
||||
* sysdeps/pthread/bits/libc-lock.h (__rtld_lock_initialize): Define.
|
||||
|
@ -304,7 +304,7 @@ start_threads (void *arg)
|
||||
}
|
||||
|
||||
err = pthread_create (&ths[i], &attr, work,
|
||||
(void *) (rand_r (&state) + starts + i));
|
||||
(void *) (long) (rand_r (&state) + starts + i));
|
||||
|
||||
if (err != 0)
|
||||
error (EXIT_FAILURE, err, "cannot start thread");
|
||||
@ -703,7 +703,13 @@ clock_getcpuclockid (pid_t pid, clockid_t *clock_id)
|
||||
}
|
||||
|
||||
|
||||
#ifdef i386
|
||||
#define HP_TIMING_NOW(Var) __asm__ __volatile__ ("rdtsc" : "=A" (Var))
|
||||
#elif defined __ia64__
|
||||
#define HP_TIMING_NOW(Var) __asm__ __volatile__ ("mov %0=ar.itc" : "=r" (Var) : : "memory")
|
||||
#else
|
||||
#error "HP_TIMING_NOW missing"
|
||||
#endif
|
||||
|
||||
/* Get current value of CLOCK and store it in TP. */
|
||||
int
|
||||
|
@ -35,17 +35,12 @@ __new_sem_wait (sem_t *sem)
|
||||
CANCELLATION_P (THREAD_SELF);
|
||||
|
||||
int *futex = (int *) sem;
|
||||
int val;
|
||||
int err;
|
||||
|
||||
do
|
||||
{
|
||||
if (*futex > 0)
|
||||
{
|
||||
val = atomic_decrement_if_positive (futex);
|
||||
if (val > 0)
|
||||
return 0;
|
||||
}
|
||||
if (atomic_decrement_if_positive (futex) > 0)
|
||||
return 0;
|
||||
|
||||
/* Enable asynchronous cancellation. Required by the standard. */
|
||||
int oldtype = __pthread_enable_asynccancel ();
|
||||
|
@ -104,7 +104,7 @@ __unregister_atfork (dso_handle)
|
||||
atomic_decrement (&deleted->handler->refcntr);
|
||||
unsigned int val;
|
||||
while ((val = deleted->handler->refcntr) != 0)
|
||||
lll_futex_wait (deleted->handler->refcntr, val);
|
||||
lll_futex_wait (&deleted->handler->refcntr, val);
|
||||
|
||||
deleted = deleted->next;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user