aboutsummaryrefslogtreecommitdiff
path: root/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedrdlock.S
diff options
context:
space:
mode:
Diffstat (limited to 'nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedrdlock.S')
-rw-r--r--nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedrdlock.S10
1 files changed, 9 insertions, 1 deletions
diff --git a/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedrdlock.S b/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedrdlock.S
index 2e99ac669a..b275b8b922 100644
--- a/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedrdlock.S
+++ b/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedrdlock.S
@@ -27,6 +27,7 @@
#define FUTEX_WAKE 1
#define EAGAIN 11
+#define EINVAL 22
#define EDEADLK 35
#define ETIMEDOUT 110
@@ -71,7 +72,11 @@ pthread_rwlock_timedrdlock:
cmpl $0, FLAGS(%ebp)
je 5f
-3: incl READERS_QUEUED(%ebp)
+ /* Check the value of the timeout parameter. */
+3: cmpl $1000000000, 4(%edi)
+ jae 19f
+
+ incl READERS_QUEUED(%ebp)
je 4f
LOCK
@@ -189,4 +194,7 @@ pthread_rwlock_timedrdlock:
18: movl $ETIMEDOUT, %ecx
jmp 9b
+
+19: movl $EINVAL, %ecx
+ jmp 9b
.size pthread_rwlock_timedrdlock,.-pthread_rwlock_timedrdlock