浏览代码

add some notes (thanks to mjn3) as to why we need these weaks, remove all the weaks that we arent actually using atm, and in general touchup the code

Mike Frysinger 19 年之前
父节点
当前提交
2fbdff9839
共有 1 个文件被更改,包括 44 次插入43 次删除
  1. 44 43
      libc/misc/pthread/weaks.c

+ 44 - 43
libc/misc/pthread/weaks.c

@@ -22,23 +22,20 @@
 #include <limits.h>
 #include <limits.h>
 #include <stdlib.h>
 #include <stdlib.h>
 
 
-static int __pthread_return_0 __P ((void));
-static int __pthread_return_1 __P ((void));
-
-static int
-__pthread_return_0 (void)
-{
-  return 0;
-}
-
-static int
-__pthread_return_1 (void)
-{
-  return 1;
-}
-
 /**********************************************************************/
 /**********************************************************************/
 /* Weaks for application/library use.
 /* Weaks for application/library use.
+ *
+ * We need to define weaks here to cover all the pthread functions that
+ * libc itself will use so that we aren't forced to link libc.so to
+ * libpthread.so.  When an application doesn't use pthreads support,
+ * the locking functions used by libc itself basically become no-ops.
+ * However, if the application uses pthreads, then it will pull in
+ * libpthread.so whose symbols will override these weaks magically
+ * turning the internal libc mutex calls from no-ops to real locking
+ * calls.
+ */
+
+/* glibc itself defines all these, but we don't need them in uClibc
  *
  *
  * Verified by comparing to glibc's linuxthreads/forward.c and defined
  * Verified by comparing to glibc's linuxthreads/forward.c and defined
  * only those that are in the glibc abi.
  * only those that are in the glibc abi.
@@ -46,22 +43,26 @@ __pthread_return_1 (void)
  * and which I left in for documentation.
  * and which I left in for documentation.
  */
  */
 
 
+static int __pthread_return_0 __P ((void));
+static int __pthread_return_0 (void) { return 0; }
+
+/*
 weak_alias (__pthread_return_0, pthread_attr_destroy)
 weak_alias (__pthread_return_0, pthread_attr_destroy)
 weak_alias (__pthread_return_0, pthread_attr_getdetachstate)
 weak_alias (__pthread_return_0, pthread_attr_getdetachstate)
 weak_alias (__pthread_return_0, pthread_attr_getinheritsched)
 weak_alias (__pthread_return_0, pthread_attr_getinheritsched)
 weak_alias (__pthread_return_0, pthread_attr_getschedparam)
 weak_alias (__pthread_return_0, pthread_attr_getschedparam)
 weak_alias (__pthread_return_0, pthread_attr_getschedpolicy)
 weak_alias (__pthread_return_0, pthread_attr_getschedpolicy)
 weak_alias (__pthread_return_0, pthread_attr_getscope)
 weak_alias (__pthread_return_0, pthread_attr_getscope)
-/* weak_alias (__pthread_return_0, pthread_attr_getstackaddr) */
+weak_alias (__pthread_return_0, pthread_attr_getstackaddr)
-/* weak_alias (__pthread_return_0, pthread_attr_getstacksize) */
+weak_alias (__pthread_return_0, pthread_attr_getstacksize)
 weak_alias (__pthread_return_0, pthread_attr_init)
 weak_alias (__pthread_return_0, pthread_attr_init)
 weak_alias (__pthread_return_0, pthread_attr_setdetachstate)
 weak_alias (__pthread_return_0, pthread_attr_setdetachstate)
 weak_alias (__pthread_return_0, pthread_attr_setinheritsched)
 weak_alias (__pthread_return_0, pthread_attr_setinheritsched)
 weak_alias (__pthread_return_0, pthread_attr_setschedparam)
 weak_alias (__pthread_return_0, pthread_attr_setschedparam)
 weak_alias (__pthread_return_0, pthread_attr_setschedpolicy)
 weak_alias (__pthread_return_0, pthread_attr_setschedpolicy)
 weak_alias (__pthread_return_0, pthread_attr_setscope)
 weak_alias (__pthread_return_0, pthread_attr_setscope)
-/* weak_alias (__pthread_return_0, pthread_attr_setstackaddr) */
+weak_alias (__pthread_return_0, pthread_attr_setstackaddr)
-/* weak_alias (__pthread_return_0, pthread_attr_setstacksize) */
+weak_alias (__pthread_return_0, pthread_attr_setstacksize)
 weak_alias (__pthread_return_0, pthread_cond_broadcast)
 weak_alias (__pthread_return_0, pthread_cond_broadcast)
 weak_alias (__pthread_return_0, pthread_cond_destroy)
 weak_alias (__pthread_return_0, pthread_cond_destroy)
 weak_alias (__pthread_return_0, pthread_cond_init)
 weak_alias (__pthread_return_0, pthread_cond_init)
@@ -71,44 +72,44 @@ weak_alias (__pthread_return_0, pthread_cond_wait)
 weak_alias (__pthread_return_0, pthread_condattr_destroy)
 weak_alias (__pthread_return_0, pthread_condattr_destroy)
 weak_alias (__pthread_return_0, pthread_condattr_init)
 weak_alias (__pthread_return_0, pthread_condattr_init)
 weak_alias (__pthread_return_0, pthread_getschedparam)
 weak_alias (__pthread_return_0, pthread_getschedparam)
-/* weak_alias (__pthread_return_0, pthread_getcancelstate) */
+weak_alias (__pthread_return_0, pthread_getcancelstate)
-/* weak_alias (__pthread_return_0, pthread_getconcurrency) */
+weak_alias (__pthread_return_0, pthread_getconcurrency)
-/* weak_alias (__pthread_return_0, pthread_getschedparam) */
 weak_alias (__pthread_return_0, pthread_mutex_destroy)
 weak_alias (__pthread_return_0, pthread_mutex_destroy)
 weak_alias (__pthread_return_0, pthread_mutex_init)
 weak_alias (__pthread_return_0, pthread_mutex_init)
 weak_alias (__pthread_return_0, pthread_mutex_lock)
 weak_alias (__pthread_return_0, pthread_mutex_lock)
-/* weak_alias (__pthread_return_0, pthread_mutex_trylock) */
+weak_alias (__pthread_return_0, pthread_mutex_trylock)
 weak_alias (__pthread_return_0, pthread_mutex_unlock)
 weak_alias (__pthread_return_0, pthread_mutex_unlock)
-/* weak_alias (__pthread_return_0, pthread_mutexattr_destroy) */
+weak_alias (__pthread_return_0, pthread_mutexattr_destroy)
-/* weak_alias (__pthread_return_0, pthread_mutexattr_gettype) */
+weak_alias (__pthread_return_0, pthread_mutexattr_gettype)
-/* weak_alias (__pthread_return_0, pthread_mutexattr_init) */
+weak_alias (__pthread_return_0, pthread_mutexattr_init)
-/* weak_alias (__pthread_return_0, pthread_mutexattr_settype) */
+weak_alias (__pthread_return_0, pthread_mutexattr_settype)
-/* weak_alias (__pthread_return_0, pthread_rwlock_destroy) */
+weak_alias (__pthread_return_0, pthread_rwlock_destroy)
-/* weak_alias (__pthread_return_0, pthread_rwlock_init) */
+weak_alias (__pthread_return_0, pthread_rwlock_init)
-/* weak_alias (__pthread_return_0, pthread_rwlock_rdlock) */
+weak_alias (__pthread_return_0, pthread_rwlock_rdlock)
-/* weak_alias (__pthread_return_0, pthread_rwlock_tryrdlock) */
+weak_alias (__pthread_return_0, pthread_rwlock_tryrdlock)
-/* weak_alias (__pthread_return_0, pthread_rwlock_trywrlock) */
+weak_alias (__pthread_return_0, pthread_rwlock_trywrlock)
-/* weak_alias (__pthread_return_0, pthread_rwlock_unlock) */
+weak_alias (__pthread_return_0, pthread_rwlock_unlock)
-/* weak_alias (__pthread_return_0, pthread_rwlock_wrlock) */
+weak_alias (__pthread_return_0, pthread_rwlock_wrlock)
-/* weak_alias (__pthread_return_0, pthread_rwlockattr_destroy) */
+weak_alias (__pthread_return_0, pthread_rwlockattr_destroy)
-/* weak_alias (__pthread_return_0, pthread_rwlockattr_getpshared) */
+weak_alias (__pthread_return_0, pthread_rwlockattr_getpshared)
-/* weak_alias (__pthread_return_0, pthread_rwlockattr_init) */
+weak_alias (__pthread_return_0, pthread_rwlockattr_init)
-/* weak_alias (__pthread_return_0, pthread_rwlockattr_setpshared) */
+weak_alias (__pthread_return_0, pthread_rwlockattr_setpshared)
 weak_alias (__pthread_return_0, pthread_self)
 weak_alias (__pthread_return_0, pthread_self)
 weak_alias (__pthread_return_0, pthread_setcancelstate)
 weak_alias (__pthread_return_0, pthread_setcancelstate)
 weak_alias (__pthread_return_0, pthread_setcanceltype)
 weak_alias (__pthread_return_0, pthread_setcanceltype)
-/* weak_alias (__pthread_return_0, pthread_setconcurrency) */
+weak_alias (__pthread_return_0, pthread_setconcurrency)
 weak_alias (__pthread_return_0, pthread_setschedparam)
 weak_alias (__pthread_return_0, pthread_setschedparam)
 
 
-/* Those are pthread functions which return 1 if successful. */
+static int __pthread_return_1 __P ((void));
+static int __pthread_return_1 (void) { return 1; }
+
 weak_alias (__pthread_return_1, pthread_equal)
 weak_alias (__pthread_return_1, pthread_equal)
 
 
-/* pthread_exit () is a special case. */
+void weak_function pthread_exit (void *retval)
-void weak_function 
-pthread_exit (void *retval)
 {
 {
   exit (EXIT_SUCCESS);
   exit (EXIT_SUCCESS);
 }
 }
+*/
 
 
 /**********************************************************************/
 /**********************************************************************/
 /* Weaks used internally by the C library. */
 /* Weaks used internally by the C library. */