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:
Ulrich Drepper 2003-12-11 09:39:06 +00:00
parent 1d9d0b80d1
commit ff48874d6a
4 changed files with 21 additions and 9 deletions

View File

@ -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.

View File

@ -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

View File

@ -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 ();

View File

@ -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;
}