Merge "Clean up __isthreaded." am: d785b4465e am: 51c1351672

am: fac7f6a187

Change-Id: I15089764bfecdef797fc3e5ee2046f4da7ee309c
This commit is contained in:
Elliott Hughes 2017-05-12 02:39:57 +00:00 committed by android-build-merger
commit 6bca7a4a89
4 changed files with 6 additions and 38 deletions

View File

@ -52,6 +52,9 @@ extern "C" {
// LP64 doesn't need to support any legacy cruft.
#if !defined(__LP64__)
// By the time any NDK-built code is running, there are plenty of threads.
int __isthreaded = 1;
// These were accidentally declared in <unistd.h> because we stupidly used to inline
// getpagesize() and __getpageshift(). Needed for backwards compatibility with old NDK apps.
unsigned int __page_size = PAGE_SIZE;

View File

@ -49,8 +49,6 @@
void __init_user_desc(struct user_desc*, bool, void*);
#endif
extern "C" int __isthreaded;
// This code is used both by each new pthread and the code that initializes the main thread.
void __init_tls(pthread_internal_t* thread) {
// Slot 0 must point to itself. The x86 Linux kernel reads the TLS from %fs:0.
@ -230,9 +228,6 @@ int pthread_create(pthread_t* thread_out, pthread_attr_t const* attr,
void* (*start_routine)(void*), void* arg) {
ErrnoRestorer errno_restorer;
// Inform the rest of the C library that at least one thread was created.
__isthreaded = 1;
pthread_attr_t thread_attr;
if (attr == NULL) {
pthread_attr_init(&thread_attr);

View File

@ -1,4 +1,3 @@
/* $OpenBSD: exit.c,v 1.12 2007/09/03 14:40:16 millert Exp $ */
/*-
* Copyright (c) 1990 The Regents of the University of California.
* All rights reserved.
@ -28,39 +27,13 @@
* SUCH DAMAGE.
*/
#include <sys/types.h>
#include <sys/mman.h>
#include <stdlib.h>
#include <unistd.h>
/*
* This variable is zero until a process has created a thread.
* It is used to avoid calling locking functions in libc when they
* are not required. By default, libc is intended to be(come)
* thread-safe, but without a (significant) penalty to non-threaded
* processes.
*/
int __isthreaded = 0;
/* BEGIN android-added: using __cxa_finalize and __cxa_thread_finalize */
extern void __cxa_finalize(void* dso_handle);
extern void __cxa_thread_finalize();
/* END android-added */
/*
* Exit, flushing stdio buffers if necessary.
*/
void
exit(int status)
{
/* BEGIN android-added: call thread_local d-tors */
void exit(int status) {
__cxa_thread_finalize();
/* END android-added */
/*
* Call functions registered by atexit() or _cxa_atexit()
* (including the stdio cleanup routine) and then _exit().
*/
__cxa_finalize(NULL);
_exit(status);
__cxa_finalize(NULL);
_exit(status);
}

View File

@ -81,7 +81,4 @@ __LIBC_HIDDEN__ extern const short _C_tolower_[];
__LIBC_HIDDEN__ extern char* __findenv(const char*, int, int*);
__LIBC_HIDDEN__ extern char* _mktemp(char*);
/* TODO: hide this when android_support.a is fixed (http://b/16298580).*/
/*__LIBC_HIDDEN__*/ extern int __isthreaded;
#endif