Use pthread_kill() in raise()
raise() should use pthread_kill() in a pthreads environment.
For bionic this means it should always be used.
Change-Id: Ic679272b664d2b8a7068b628fb83a9f7395c441f
diff --git a/libc/Android.mk b/libc/Android.mk
index dc2b331..e58d4fb 100644
--- a/libc/Android.mk
+++ b/libc/Android.mk
@@ -199,7 +199,6 @@
bionic/ptsname_r.c \
bionic/pututline.c \
bionic/pwrite.c \
- bionic/raise.c \
bionic/realpath.c \
bionic/reboot.c \
bionic/recv.c \
@@ -282,6 +281,7 @@
bionic/__memcpy_chk.cpp \
bionic/__memmove_chk.cpp \
bionic/__memset_chk.cpp \
+ bionic/raise.cpp \
bionic/__set_errno.cpp \
bionic/setlocale.cpp \
bionic/__strcat_chk.cpp \
diff --git a/libc/bionic/raise.c b/libc/bionic/raise.cpp
similarity index 89%
rename from libc/bionic/raise.c
rename to libc/bionic/raise.cpp
index 7b03a7a..f69d90b 100644
--- a/libc/bionic/raise.c
+++ b/libc/bionic/raise.cpp
@@ -25,10 +25,14 @@
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
-#include <unistd.h>
-#include <signal.h>
-int raise(int signum)
-{
- return kill(gettid(), signum);
+#include <pthread.h>
+
+int raise(int sig) {
+ int rc = pthread_kill(pthread_self(), sig);
+ if (rc != 0) {
+ errno = rc;
+ return -1;
+ }
+ return 0;
}