platform_bionic/libc/arch-arm
Elliott Hughes b30aff405a 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 75c55ff84e.

Bug: 15195455
Change-Id: I6ffb13e5cf6a35d8f59f692d94192aae9ab4593d
2014-05-28 18:31:15 -07:00
..
bionic Revert "Revert "Lose the hand-written futex assembler."" 2014-05-28 18:31:15 -07:00
cortex-a7 libc/arm: add cortex-a7 cpu variant 2013-03-23 01:38:22 -07:00
cortex-a8 libc/arm: add cortex-a8 cpu variant 2013-05-15 20:13:28 -07:00
cortex-a9 denver: optimize memmove 2014-05-20 12:31:38 -07:00
cortex-a15 denver: optimize memmove 2014-05-20 12:31:38 -07:00
denver denver: optimize memmove 2014-05-20 12:31:38 -07:00
generic denver: optimize memmove 2014-05-20 12:31:38 -07:00
include/machine Clean up <machine/ieee.h>. 2014-04-16 16:31:17 -07:00
krait denver: optimize memmove 2014-05-20 12:31:38 -07:00
syscalls Revert "Revert "Lose the hand-written futex assembler."" 2014-05-28 18:31:15 -07:00
arm.mk Revert "Revert "Lose the hand-written futex assembler."" 2014-05-28 18:31:15 -07:00