[uClibc-cvs] uClibc/libpthread/linuxthreads pthread.c,1.8,1.9

Erik Andersen andersen at codepoet.org
Tue Mar 4 10:47:55 UTC 2003


Update of /var/cvs/uClibc/libpthread/linuxthreads
In directory winder:/tmp/cvs-serv22570/libpthread/linuxthreads

Modified Files:
	pthread.c 
Log Message:
Patch from Stefan Allius adding the function 'thread_self_stack'
from glibc 2.3 that is needed for pthreads to compile for SuperH.


Index: pthread.c
===================================================================
RCS file: /var/cvs/uClibc/libpthread/linuxthreads/pthread.c,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -d -r1.8 -r1.9
--- pthread.c	27 Feb 2003 18:12:44 -0000	1.8
+++ pthread.c	4 Mar 2003 10:47:50 -0000	1.9
@@ -104,7 +104,7 @@
 /* Descriptor of the manager thread; none of this is used but the error
    variables, the p_pid and p_priority fields,
    and the address for identification.  */
-
+#define manager_thread (&__pthread_manager_thread)
 struct _pthread_descr_struct __pthread_manager_thread = {
   NULL,                       /* pthread_descr p_nextlive */
   NULL,                       /* pthread_descr p_prevlive */
@@ -553,6 +553,26 @@
 #endif
 
   return h->h_descr;
+}
+#else
+
+static pthread_descr thread_self_stack(void)
+{
+    char *sp = CURRENT_STACK_FRAME;
+    pthread_handle h;
+
+    if (sp >= __pthread_manager_thread_bos && sp < __pthread_manager_thread_tos)
+	return manager_thread;
+    h = __pthread_handles + 2;
+# ifdef USE_TLS
+    while (h->h_descr == NULL
+	    || ! (sp <= (char *) h->h_descr->p_stackaddr && sp >= h->h_bottom))
+	h++;
+# else
+    while (! (sp <= (char *) h->h_descr && sp >= h->h_bottom))
+	h++;
+# endif
+    return h->h_descr;
 }
 
 #endif




More information about the uClibc-cvs mailing list