dd586f2ebd0c42904e699f3634568a38c97d4da7 |
|
17-Dec-2015 |
Elliott Hughes <enh@google.com> |
sem_timedwait with a null timeout doesn't mean "forever". It actually means "crash immediately". Well, it's an error. And callers are much more likely to realize their mistake if we crash immediately rather than return EINVAL. Historically, glibc has crashed and bionic -- before the recent changes -- returned EINVAL, so this is a behavior change. Change-Id: I0c2373a6703b20b8a97aacc1e66368a5885e8c51
|
c9a659c57b256001fd63f9825bde69e660c2655b |
|
06-Nov-2015 |
Yabin Cui <yabinc@google.com> |
Use FUTEX_WAIT_BITSET to avoid converting timeouts. Add unittests for pthread APIs with timeout parameter. Bug: 17569991 Change-Id: I6b3b9b2feae03680654cd64c3112ce7644632c87
|
76615dae93c18ac890e167c547a08c0228709a33 |
|
17-Mar-2015 |
Yabin Cui <yabinc@google.com> |
Provide writer preference option in rwlock. Previous implementation of rwlock contains four atomic variables, which is hard to maintain and change. So I make following changes in this CL: 1. Add pending flags in rwlock.state, so we don't need to synchronize between different atomic variables. Using compare_and_swap operations on rwlock.state is enough for all state change. 2. Add pending_lock to protect readers/writers waiting and wake up operations. As waiting/wakeup is not performance critical, using a lock is easier to maintain. 3. Add writer preference option. 4. Add unit tests for rwlock. Bug: 19109156 Change-Id: Idcaa58d695ea401d64445610b465ac5cff23ec7c
|
b58457221364eaad039c2c49a42626b725e980d5 |
|
17-Mar-2015 |
Yabin Cui <yabinc@google.com> |
Add test for pthread types alignment check. Bug: 19249079 Change-Id: I83c4f0d11ec5d82a346ae0057d02a92bb1d519e8
|
2fabea47ac9475bcc52aff0715819d18aa5bdf1d |
|
13-Mar-2015 |
Yabin Cui <yabinc@google.com> |
Hide content of pthread_rwlock_t in pthread_rwlock_internal_t. Bug: 19249079 Change-Id: Ifbe634c716b6793bef897ec5134b55eb44c6b8d5
|
08ee8d2030fbc73c4c144e819dd68806b0351cbe |
|
12-Feb-2015 |
Yabin Cui <yabinc@google.com> |
Switch pthread_rwlock_t to stdatomic. Bug: 19099838 Change-Id: Ie82967a60b5cec61a8bdd1e0e4a03738d01944f8
|
04303f5a8ab9a992f3671d46b6ee2171582cbd61 |
|
19-Sep-2014 |
Elliott Hughes <enh@google.com> |
Add semaphore tests, fix sem_destroy. Bug: https://code.google.com/p/android/issues/detail?id=76088 Change-Id: I4a0561b23e90312384d40a1c804ca64ee98f4066
|
1b676ea5fba4af0f3a11ca0c31a40825f2157601 |
|
23-May-2014 |
Calin Juravle <calin@google.com> |
Migrate pthread_rwlock implementation away from sys/atomics Bug: 8133149 Bug: 14903517 Change-Id: Ib85987f53d7aeaec12a980ccb645c4a449c48503
|
92687e41bcf108957944dafa80a9bfda219bfb0f |
|
22-May-2014 |
Calin Juravle <calin@google.com> |
Cleaned up pthread rwlocks implementation. - used underscore_style_for_vars - extracted time related functionality into a function - cleaned up style - removed unused fields from pthread_rwlock_t on LP64 - changed reservation in pthread_rwlock_t so that the size of the structure equals glibc version Bug: 8133149 Change-Id: I84ad3918678dc7f5e6b3db9b7e9b0899d3abe9cd
|
76f352eec12d8938101e5ae33429c72797c3aa23 |
|
19-May-2014 |
Calin Juravle <calin@google.com> |
Mutex-free implementation of pthread_rwlock Bug: 8133149 Change-Id: Id6775010d95f2634b173daa55d87a59a3cf4131b
|
39b644a0e270df453c53d6060cd364391bb1c512 |
|
04-Mar-2014 |
Elliott Hughes <enh@google.com> |
Remove dead NULL checks from pthread code. GCC is removing these checks anyway because it knows the arguments must be non-null, so leaving this code around is just confusing. We know from experience that people were shipping code with locking bugs because they weren't checking for error returns. Failing hard like glibc does seems the better choice. (And it's what the checked in code was already doing; this patch doesn't change that. It just makes it more obvious that that's what's going on.) Change-Id: I167c6d7c0a296822baf0cb9b43b97821eba7ab35
|
c3f114037dbf028896310609fd28cf2b3da99c4d |
|
30-Oct-2013 |
Elliott Hughes <enh@google.com> |
<pthread.h> fixes and pthread cleanup. <pthread.h> was missing nonnull attributes, noreturn on pthread_exit, and had incorrect cv qualifiers for several standard functions. I've also marked the non-standard stuff (where I count glibc rather than POSIX as "standard") so we can revisit this cruft for LP64 and try to ensure we're compatible with glibc. I've also broken out the pthread_cond* functions into a new file. I've made the remaining pthread files (plus ptrace) part of the bionic code and fixed all the warnings. I've added a few more smoke tests for chunks of untested pthread functionality. We no longer need the libc_static_common_src_files hack for any of the pthread implementation because we long since stripped out the rest of the armv5 support, and this hack was just to ensure that __get_tls in libc.a went via the kernel if necessary. This patch also finishes the job of breaking up the pthread.c monolith, and adds a handful of new tests. Change-Id: Idc0ae7f5d8aa65989598acd4c01a874fe21582c7
|