[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