Revert "Remove the global thread list."
This reverts commit b0e8c565a622b5519e03d4416b0b5b1a5f20d7f5.
Breaks swiftshader (http:/b/34883464).
Change-Id: I7b21193ba8a78f07d7ac65e41d0fe8516940a83b
diff --git a/libc/bionic/pthread_internal.h b/libc/bionic/pthread_internal.h
index e40f5a4..d2abea0 100644
--- a/libc/bionic/pthread_internal.h
+++ b/libc/bionic/pthread_internal.h
@@ -56,12 +56,10 @@
class thread_local_dtor;
class pthread_internal_t {
- // These two fields preserve backwards compatibility for code accessing the `tid` field,
- // since we didn't always offer pthread_gettid_np.
- void* unused0 __unused;
- void* unused1 __unused;
-
public:
+ class pthread_internal_t* next;
+ class pthread_internal_t* prev;
+
pid_t tid;
private:
@@ -114,13 +112,16 @@
char dlerror_buffer[__BIONIC_DLERROR_BUFFER_SIZE];
};
-__LIBC_HIDDEN__ int __init_thread(pthread_internal_t*);
-__LIBC_HIDDEN__ void __free_thread(pthread_internal_t*);
-
-__LIBC_HIDDEN__ void __init_tls(pthread_internal_t*);
-__LIBC_HIDDEN__ void __init_thread_stack_guard(pthread_internal_t*);
+__LIBC_HIDDEN__ int __init_thread(pthread_internal_t* thread);
+__LIBC_HIDDEN__ void __init_tls(pthread_internal_t* thread);
+__LIBC_HIDDEN__ void __init_thread_stack_guard(pthread_internal_t* thread);
__LIBC_HIDDEN__ void __init_alternate_signal_stack(pthread_internal_t*);
+__LIBC_HIDDEN__ pthread_t __pthread_internal_add(pthread_internal_t* thread);
+__LIBC_HIDDEN__ pthread_internal_t* __pthread_internal_find(pthread_t pthread_id);
+__LIBC_HIDDEN__ void __pthread_internal_remove(pthread_internal_t* thread);
+__LIBC_HIDDEN__ void __pthread_internal_remove_and_free(pthread_internal_t* thread);
+
// Make __get_thread() inlined for performance reason. See http://b/19825434.
static inline __always_inline pthread_internal_t* __get_thread() {
void** tls = __get_tls();