diff options
author | Thomas Schwinge <thomas@codesourcery.com> | 2012-03-08 11:22:41 +0100 |
---|---|---|
committer | Thomas Schwinge <thomas@codesourcery.com> | 2012-03-08 11:22:41 +0100 |
commit | 2edd9a79e5967e01f9afc3ae1207159a2c53c73f (patch) | |
tree | adc9c04c9f2a8072909c3b56981e548b5fd54491 /nptl | |
parent | c564a81246d0064eb12bc34cac8996709a0ecbfc (diff) | |
download | glibc-2edd9a79e5967e01f9afc3ae1207159a2c53c73f.tar.gz |
Work around kernel rejecting valid absolute timestamps.
Diffstat (limited to 'nptl')
-rw-r--r-- | nptl/ChangeLog | 3 | ||||
-rw-r--r-- | nptl/sysdeps/unix/sysv/linux/sh/lowlevellock.S | 10 |
2 files changed, 11 insertions, 2 deletions
diff --git a/nptl/ChangeLog b/nptl/ChangeLog index cd70329abb..ddd0ee2027 100644 --- a/nptl/ChangeLog +++ b/nptl/ChangeLog @@ -1,5 +1,8 @@ 2012-03-08 Thomas Schwinge <thomas@codesourcery.com> + * sysdeps/unix/sysv/linux/sh/lowlevellock.S (__lll_timedlock_wait): + Check for timestamp before the Epoch. + * sysdeps/unix/sysv/linux/sh/sem_timedwait.S (sem_timedwait): Fix updating nwaiters. diff --git a/nptl/sysdeps/unix/sysv/linux/sh/lowlevellock.S b/nptl/sysdeps/unix/sysv/linux/sh/lowlevellock.S index 9327860ac9..fe4e3b628b 100644 --- a/nptl/sysdeps/unix/sysv/linux/sh/lowlevellock.S +++ b/nptl/sysdeps/unix/sysv/linux/sh/lowlevellock.S @@ -1,5 +1,4 @@ -/* Copyright (C) 2003, 2004, 2005, 2007, 2008, 2009, 2010 - Free Software Foundation, Inc. +/* Copyright (C) 2003-2012 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 @@ -243,6 +242,12 @@ __lll_timedlock_wait: bt .Lreltmo # endif + /* if (timeout->tv_sec < 0) return ETIMEDOUT; */ + mov.l @r6, r1 + cmp/pz r1 + bf/s 5f + mov #ETIMEDOUT, r0 + mov r4, r2 mov r5, r4 mov r7, r5 @@ -278,6 +283,7 @@ __lll_timedlock_wait: neg r0, r3 3: mov r3, r0 +5: rts mov.l @r15+, r12 |