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
|
4c5891d93dc151e2f07fc87ae967f23e6c3d6e0c |
|
20-Feb-2015 |
Elliott Hughes <enh@google.com> |
valgrind can't find syscall because we didn't put it in <unistd.h>. Change-Id: I1e47291d4476bd2816138a8cf58f29d4986d39e3
|
1ee46520caa1a2a47c69d58f49f4042194ec0339 |
|
29-May-2014 |
Elliott Hughes <enh@google.com> |
Return the actual success result from __futex. futex(2) can return non-zero successes. Bug: 15195455 Change-Id: I7818bc922a5a2df31228ff72c169320b5e69a544
|
b30aff405a220495941f1673b0a5e66c4fa8b84c |
|
28-May-2014 |
Elliott Hughes <enh@google.com> |
Revert "Revert "Lose the hand-written futex assembler."" The problem with the original patch was that using syscall(3) means that errno can be set, but pthread_create(3) was abusing the TLS errno slot as a pthread_mutex_t for the thread startup handshake. There was also a mistake in the check for syscall failures --- it should have checked against -1 instead of 0 (not just because that's the default idiom, but also here because futex(2) can legitimately return values > 0). This patch stops abusing the TLS errno slot and adds a pthread_mutex_t to pthread_internal_t instead. (Note that for LP64 sizeof(pthread_mutex_t) > sizeof(uintptr_t), so we could potentially clobber other TLS slots too.) I've also rewritten the LP32 compatibility stubs to directly reuse the code from the .h file. This reverts commit 75c55ff84ebfa686c7ae2cc8ee431c6a33bd46b4. Bug: 15195455 Change-Id: I6ffb13e5cf6a35d8f59f692d94192aae9ab4593d
|
75c55ff84ebfa686c7ae2cc8ee431c6a33bd46b4 |
|
28-May-2014 |
Narayan Kamath <narayan@google.com> |
Revert "Lose the hand-written futex assembler." This reverts commit ced906c849704f379d7191822f6d74993d4fa296. Causes issues on art / dalvik due to a broken return value check and other undiagnosed issues. bug: 15195455 Change-Id: I5d6bbb389ecefb0e33a5237421a9d56d32a9317c
|
ced906c849704f379d7191822f6d74993d4fa296 |
|
23-May-2014 |
Elliott Hughes <enh@google.com> |
Lose the hand-written futex assembler. Also stop exporting 'futex'. Bug: 12250341 Change-Id: Icc4fa4296cd04dfe0d1061822c69e2eb40c3433a
|
d5ed63a6a8290de88802172ce178656fbafe70c6 |
|
22-May-2014 |
Elliott Hughes <enh@google.com> |
Hide most of the private futex functions. Also hide part of the system properties compatibility code, since we needed to touch that to keep it building. I'll remove __futex_syscall4 and futex in a later patch. Bug: 11156955 Change-Id: Ibbf42414c5bb07fb9f1c4a169922844778e4eeae
|
3973de9616510e423dc8d59e9a0a9d577f3d1a06 |
|
16-May-2014 |
Elliott Hughes <enh@google.com> |
Hide __futex_wake_ex and __futex_wait_ex. Also remove some cruft that isn't needed now we're using uapi headers. Bug: 11156955 Change-Id: I936b9c5b01d8bd6bfb2e5bc0e3f86cd86739cc04
|
5eccb9646dd94438911706d3ebf52775caa7f41e |
|
21-Dec-2013 |
Elliott Hughes <enh@google.com> |
Fix aarch64 futex assembly routines. Also make the other architectures more similar to one another, use NULL instead of 0 in calling code, and remove an unused #define. Change-Id: I52b874afb6a351c802f201a0625e484df6d093bb
|
877ec6d90418ff1d6597147d355a2229fdffae7e |
|
16-Nov-2013 |
Elliott Hughes <enh@google.com> |
Fix pthread_join. Let the kernel keep pthread_internal_t::tid updated, including across forks and for the main thread. This then lets us fix pthread_join to only return after the thread has really exited. Also fix the thread attributes of the main thread so we don't unmap the main thread's stack (which is really owned by the dynamic linker and contains things like environment variables), which fixes crashes when joining with an exited main thread and also fixes problems reported publicly with accessing environment variables after the main thread exits (for which I've added a new unit test). In passing I also fixed a bug where if the clone(2) inside pthread_create(3) fails, we'd unmap the child's stack and TLS (which contains the mutex) and then try to unlock the mutex. Boom! It wasn't until after I'd uploaded the fix for this that I came across a new public bug reporting this exact failure. Bug: 8206355 Bug: 11693195 Bug: https://code.google.com/p/android/issues/detail?id=57421 Bug: https://code.google.com/p/android/issues/detail?id=62392 Change-Id: I2af9cf6e8ae510a67256ad93cad891794ed0580b
|
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
|
36fa67bcdd90f18a3c68f8637ae836762407fa51 |
|
06-Jun-2013 |
Elliott Hughes <enh@google.com> |
Ensure header files using __BEGIN_DECLS include sys/cdefs.h. We keep fixing these one-by-one; let's fix them all at once. Found thus: find . -name *.h | xargs grep -L sys/cdefs.h | xargs grep -l BEGIN_DECL | xargs grep -L sys/types Change-Id: I188842aa2484dc6176e96556d57c38a0f785b59b
|
3e898476c7230b60a0f76968e64ff25f475b48c0 |
|
12-Feb-2013 |
Elliott Hughes <enh@google.com> |
Revert "Revert "More pthreads cleanup."" This reverts commit 6f94de3ca49e4ea147b1c59e5818fa175846518f (Doesn't try to increase the number of TLS slots; that leads to an inability to boot. Adds more tests.) Change-Id: Ia7d25ba3995219ed6e686463dbba80c95cc831ca
|
6f94de3ca49e4ea147b1c59e5818fa175846518f |
|
12-Feb-2013 |
Elliott Hughes <enh@google.com> |
Revert "More pthreads cleanup." This reverts commit 2a1bb4e64677b9abbc17173c79768ed494565047 Change-Id: Ia443d0748015c8e9fc3121e40e68258616767b51
|
2a1bb4e64677b9abbc17173c79768ed494565047 |
|
11-Feb-2013 |
Elliott Hughes <enh@google.com> |
More pthreads cleanup. POSIX says pthread_create returns EAGAIN, not ENOMEM. Also pull pthread_attr_t functions into their own file. Also pull pthread_setname_np into its own file. Also remove unnecessary #includes from pthread_key.cpp. Also account for those pthread keys used internally by bionic, so they don't count against the number of keys available to user code. (They do with glibc, but glibc's limit is the much more generous 1024.) Also factor out the common errno-restoring idiom to reduce gotos. Bug: 6702535 Change-Id: I555e66efffcf2c1b5a2873569e91489156efca42
|
6304d8b21891fd0cb7b5a4c25159a3d3b1709d62 |
|
03-Jun-2010 |
David 'Digit' Turner <digit@google.com> |
Use private futexes for semaphores, unless they are initialized with pshared != 0. Change-Id: I534e36a7171cd37037ae03b910ba71ea6968286d Note: previously, sem_init() would return an error if pshared != 0.
|