diff options
Diffstat (limited to 'nptl')
-rw-r--r-- | nptl/ChangeLog | 5 | ||||
-rw-r--r-- | nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S | 3 | ||||
-rw-r--r-- | nptl/tst-cancel4.c | 8 |
3 files changed, 12 insertions, 4 deletions
diff --git a/nptl/ChangeLog b/nptl/ChangeLog index 21157bca0d..65cf4efb59 100644 --- a/nptl/ChangeLog +++ b/nptl/ChangeLog @@ -1,3 +1,8 @@ +2003-06-27 Ulrich Drepper <drepper@redhat.com> + + * tst-cancel4.c (tf_msgrcv): Strengthen test against valid + premature returns a bit more. + 2003-06-26 Ulrich Drepper <drepper@redhat.com> * sysdeps/pthread/librt-cancellation.c: Move __pthread_unwind diff --git a/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S b/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S index 2eba326fa3..f09be4403d 100644 --- a/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S +++ b/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S @@ -334,8 +334,9 @@ versioned_symbol (libpthread, __pthread_cond_timedwait, pthread_cond_timedwait, .type __condvar_tw_cleanup3, @function __condvar_tw_cleanup3: - leal wakeup_seq(%edx), %ebx # XXX Is this correct? %edx preserved? + movl 40(%esp), %ebx .LSbl5: + jmp __condvar_tw_cleanup .size __condvar_tw_cleanup3, .-__condvar_tw_cleanup3 .type __condvar_tw_cleanup2, @function __condvar_tw_cleanup2: diff --git a/nptl/tst-cancel4.c b/nptl/tst-cancel4.c index 8b0b735ada..a8142d9768 100644 --- a/nptl/tst-cancel4.c +++ b/nptl/tst-cancel4.c @@ -1891,6 +1891,8 @@ tf_msgrcv (void *arg) } } + ssize_t s; + pthread_cleanup_push (cl, NULL); struct @@ -1906,13 +1908,13 @@ tf_msgrcv (void *arg) do { errno = 0; - msgrcv (tempmsg, (struct msgbuf *) &m, 10, randnr, 0); + s = msgrcv (tempmsg, (struct msgbuf *) &m, 10, randnr, 0); } - while (errno == EIDRM); + while (errno == EIDRM || errno == EINTR); pthread_cleanup_pop (0); - printf ("%s: msgrcv returned\n", __FUNCTION__); + printf ("%s: msgrcv returned %zd with errno = %m\n", __FUNCTION__, s); exit (1); } |