mirror of
https://sourceware.org/git/glibc.git
synced 2024-12-22 02:40:08 +00:00
* sysdeps/unix/sysv/linux/sh/pthread_cond_broadcast.S: For PI
mutexes wake all mutexes. * sysdeps/unix/sysv/linux/sh/pthread_cond_wait.S: Don't increment WAKEUP_SEQ if this would increase the value beyond TOTAL_SEQ. * sysdeps/unix/sysv/linux/sh/pthread_cond_timedwait.S: Likewise.
This commit is contained in:
parent
4cd3633d1a
commit
bd6d3b7dad
@ -1,3 +1,11 @@
|
||||
2006-09-12 Kaz Kojima <kkojima@rr.iij4u.or.jp>
|
||||
|
||||
* sysdeps/unix/sysv/linux/sh/pthread_cond_broadcast.S: For PI
|
||||
mutexes wake all mutexes.
|
||||
* sysdeps/unix/sysv/linux/sh/pthread_cond_wait.S: Don't increment
|
||||
WAKEUP_SEQ if this would increase the value beyond TOTAL_SEQ.
|
||||
* sysdeps/unix/sysv/linux/sh/pthread_cond_timedwait.S: Likewise.
|
||||
|
||||
2006-09-12 Ulrich Drepper <drepper@redhat.com>
|
||||
|
||||
* tst-cond22.c (tf): Slight changes to the pthread_cond_wait use
|
||||
@ -12,7 +20,7 @@
|
||||
* sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S: Likewise.
|
||||
* sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S: Likewise.
|
||||
* sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S: Likewise.
|
||||
|
||||
|
||||
2006-09-08 Ulrich Drepper <drepper@redhat.com>
|
||||
|
||||
[BZ #3123]
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* Copyright (C) 2003, 2004 Free Software Foundation, Inc.
|
||||
/* Copyright (C) 2003, 2004, 2006 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
@ -20,6 +20,7 @@
|
||||
#include <shlib-compat.h>
|
||||
#include <lowlevelcond.h>
|
||||
#include <kernel-features.h>
|
||||
#include <pthread-pi-defines.h>
|
||||
#include "lowlevel-atomic.h"
|
||||
|
||||
#define SYS_futex 240
|
||||
@ -98,6 +99,11 @@ __pthread_cond_broadcast:
|
||||
bt/s 9f
|
||||
add #cond_futex, r4
|
||||
|
||||
/* XXX: The kernel so far doesn't support requeue to PI futex. */
|
||||
mov.l @(MUTEX_KIND,r9), r0
|
||||
tst #PI_BIT, r0
|
||||
bf 9f
|
||||
|
||||
/* Wake up all threads. */
|
||||
mov #FUTEX_CMP_REQUEUE, r5
|
||||
mov #1, r6
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* Copyright (C) 2003, 2004 Free Software Foundation, Inc.
|
||||
/* Copyright (C) 2003, 2004, 2006 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
@ -521,6 +521,21 @@ __condvar_tw_cleanup:
|
||||
mov #1, r2
|
||||
mov #0, r3
|
||||
|
||||
/* We increment the wakeup_seq counter only if it is lower than
|
||||
total_seq. If this is not the case the thread was woken and
|
||||
then canceled. In this case we ignore the signal. */
|
||||
mov.l @(total_seq+4,r8), r0
|
||||
mov.l @(wakeup_seq+4,r8), r1
|
||||
cmp/hi r1, r0
|
||||
bt/s 6f
|
||||
cmp/hi r0, r1
|
||||
bt 7f
|
||||
mov.l @(total_seq,r8), r0
|
||||
mov.l @(wakeup_seq,r8), r1
|
||||
cmp/hs r0, r1
|
||||
bt 7f
|
||||
|
||||
6:
|
||||
clrt
|
||||
mov.l @(wakeup_seq,r8),r0
|
||||
mov.l @(wakeup_seq+4,r8),r1
|
||||
@ -532,6 +547,7 @@ __condvar_tw_cleanup:
|
||||
add r2, r0
|
||||
mov.l r0,@(cond_futex,r8)
|
||||
|
||||
7:
|
||||
clrt
|
||||
mov.l @(woken_seq,r8),r0
|
||||
mov.l @(woken_seq+4,r8),r1
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* Copyright (C) 2003, 2004 Free Software Foundation, Inc.
|
||||
/* Copyright (C) 2003, 2004, 2006 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
@ -385,6 +385,21 @@ __condvar_w_cleanup:
|
||||
mov #1, r2
|
||||
mov #0, r3
|
||||
|
||||
/* We increment the wakeup_seq counter only if it is lower than
|
||||
total_seq. If this is not the case the thread was woken and
|
||||
then canceled. In this case we ignore the signal. */
|
||||
mov.l @(total_seq+4,r8), r0
|
||||
mov.l @(wakeup_seq+4,r8), r1
|
||||
cmp/hi r1, r0
|
||||
bt/s 6f
|
||||
cmp/hi r0, r1
|
||||
bt 7f
|
||||
mov.l @(total_seq,r8), r0
|
||||
mov.l @(wakeup_seq,r8), r1
|
||||
cmp/hs r0, r1
|
||||
bt 7f
|
||||
|
||||
6:
|
||||
clrt
|
||||
mov.l @(wakeup_seq,r8),r0
|
||||
mov.l @(wakeup_seq+4,r8),r1
|
||||
@ -396,6 +411,7 @@ __condvar_w_cleanup:
|
||||
add r2, r0
|
||||
mov.l r0,@(cond_futex,r8)
|
||||
|
||||
7:
|
||||
clrt
|
||||
mov.l @(woken_seq,r8),r0
|
||||
mov.l @(woken_seq+4,r8),r1
|
||||
|
Loading…
Reference in New Issue
Block a user