mirror of
https://sourceware.org/git/glibc.git
synced 2025-07-30 22:43:12 +03: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:
@ -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>
|
2003-12-10 Ulrich Drepper <drepper@redhat.com>
|
||||||
|
|
||||||
* sysdeps/pthread/bits/libc-lock.h (__rtld_lock_initialize): Define.
|
* 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,
|
err = pthread_create (&ths[i], &attr, work,
|
||||||
(void *) (rand_r (&state) + starts + i));
|
(void *) (long) (rand_r (&state) + starts + i));
|
||||||
|
|
||||||
if (err != 0)
|
if (err != 0)
|
||||||
error (EXIT_FAILURE, err, "cannot start thread");
|
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))
|
#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. */
|
/* Get current value of CLOCK and store it in TP. */
|
||||||
int
|
int
|
||||||
|
@ -35,17 +35,12 @@ __new_sem_wait (sem_t *sem)
|
|||||||
CANCELLATION_P (THREAD_SELF);
|
CANCELLATION_P (THREAD_SELF);
|
||||||
|
|
||||||
int *futex = (int *) sem;
|
int *futex = (int *) sem;
|
||||||
int val;
|
|
||||||
int err;
|
int err;
|
||||||
|
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
if (*futex > 0)
|
if (atomic_decrement_if_positive (futex) > 0)
|
||||||
{
|
return 0;
|
||||||
val = atomic_decrement_if_positive (futex);
|
|
||||||
if (val > 0)
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Enable asynchronous cancellation. Required by the standard. */
|
/* Enable asynchronous cancellation. Required by the standard. */
|
||||||
int oldtype = __pthread_enable_asynccancel ();
|
int oldtype = __pthread_enable_asynccancel ();
|
||||||
|
@ -104,7 +104,7 @@ __unregister_atfork (dso_handle)
|
|||||||
atomic_decrement (&deleted->handler->refcntr);
|
atomic_decrement (&deleted->handler->refcntr);
|
||||||
unsigned int val;
|
unsigned int val;
|
||||||
while ((val = deleted->handler->refcntr) != 0)
|
while ((val = deleted->handler->refcntr) != 0)
|
||||||
lll_futex_wait (deleted->handler->refcntr, val);
|
lll_futex_wait (&deleted->handler->refcntr, val);
|
||||||
|
|
||||||
deleted = deleted->next;
|
deleted = deleted->next;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user