summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Frysinger <vapier@gentoo.org>2005-12-02 22:48:50 +0000
committerMike Frysinger <vapier@gentoo.org>2005-12-02 22:48:50 +0000
commit2fbdff983911f6f5cb0741ab66d9d0ad52dd8869 (patch)
tree7eb905a515726f71a8a75f561d2d19b34052a19d
parentb96b4898c1554f8244ea38205056d610e540a445 (diff)
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
-rw-r--r--libc/misc/pthread/weaks.c87
1 files changed, 44 insertions, 43 deletions
diff --git a/libc/misc/pthread/weaks.c b/libc/misc/pthread/weaks.c
index befa8a5c4..a07582aab 100644
--- a/libc/misc/pthread/weaks.c
+++ b/libc/misc/pthread/weaks.c
@@ -22,46 +22,47 @@
#include <limits.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.
*
+ * 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
* only those that are in the glibc abi.
* The commented aliases are ones that were previously defined in uClibc
* 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_getdetachstate)
weak_alias (__pthread_return_0, pthread_attr_getinheritsched)
weak_alias (__pthread_return_0, pthread_attr_getschedparam)
weak_alias (__pthread_return_0, pthread_attr_getschedpolicy)
weak_alias (__pthread_return_0, pthread_attr_getscope)
-/* weak_alias (__pthread_return_0, pthread_attr_getstackaddr) */
-/* weak_alias (__pthread_return_0, pthread_attr_getstacksize) */
+weak_alias (__pthread_return_0, pthread_attr_getstackaddr)
+weak_alias (__pthread_return_0, pthread_attr_getstacksize)
weak_alias (__pthread_return_0, pthread_attr_init)
weak_alias (__pthread_return_0, pthread_attr_setdetachstate)
weak_alias (__pthread_return_0, pthread_attr_setinheritsched)
weak_alias (__pthread_return_0, pthread_attr_setschedparam)
weak_alias (__pthread_return_0, pthread_attr_setschedpolicy)
weak_alias (__pthread_return_0, pthread_attr_setscope)
-/* weak_alias (__pthread_return_0, pthread_attr_setstackaddr) */
-/* weak_alias (__pthread_return_0, pthread_attr_setstacksize) */
+weak_alias (__pthread_return_0, pthread_attr_setstackaddr)
+weak_alias (__pthread_return_0, pthread_attr_setstacksize)
weak_alias (__pthread_return_0, pthread_cond_broadcast)
weak_alias (__pthread_return_0, pthread_cond_destroy)
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_init)
weak_alias (__pthread_return_0, pthread_getschedparam)
-/* weak_alias (__pthread_return_0, pthread_getcancelstate) */
-/* weak_alias (__pthread_return_0, pthread_getconcurrency) */
-/* weak_alias (__pthread_return_0, pthread_getschedparam) */
+weak_alias (__pthread_return_0, pthread_getcancelstate)
+weak_alias (__pthread_return_0, pthread_getconcurrency)
weak_alias (__pthread_return_0, pthread_mutex_destroy)
weak_alias (__pthread_return_0, pthread_mutex_init)
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_mutexattr_destroy) */
-/* weak_alias (__pthread_return_0, pthread_mutexattr_gettype) */
-/* weak_alias (__pthread_return_0, pthread_mutexattr_init) */
-/* weak_alias (__pthread_return_0, pthread_mutexattr_settype) */
-/* weak_alias (__pthread_return_0, pthread_rwlock_destroy) */
-/* weak_alias (__pthread_return_0, pthread_rwlock_init) */
-/* weak_alias (__pthread_return_0, pthread_rwlock_rdlock) */
-/* weak_alias (__pthread_return_0, pthread_rwlock_tryrdlock) */
-/* weak_alias (__pthread_return_0, pthread_rwlock_trywrlock) */
-/* weak_alias (__pthread_return_0, pthread_rwlock_unlock) */
-/* weak_alias (__pthread_return_0, pthread_rwlock_wrlock) */
-/* weak_alias (__pthread_return_0, pthread_rwlockattr_destroy) */
-/* weak_alias (__pthread_return_0, pthread_rwlockattr_getpshared) */
-/* weak_alias (__pthread_return_0, pthread_rwlockattr_init) */
-/* weak_alias (__pthread_return_0, pthread_rwlockattr_setpshared) */
+weak_alias (__pthread_return_0, pthread_mutexattr_destroy)
+weak_alias (__pthread_return_0, pthread_mutexattr_gettype)
+weak_alias (__pthread_return_0, pthread_mutexattr_init)
+weak_alias (__pthread_return_0, pthread_mutexattr_settype)
+weak_alias (__pthread_return_0, pthread_rwlock_destroy)
+weak_alias (__pthread_return_0, pthread_rwlock_init)
+weak_alias (__pthread_return_0, pthread_rwlock_rdlock)
+weak_alias (__pthread_return_0, pthread_rwlock_tryrdlock)
+weak_alias (__pthread_return_0, pthread_rwlock_trywrlock)
+weak_alias (__pthread_return_0, pthread_rwlock_unlock)
+weak_alias (__pthread_return_0, pthread_rwlock_wrlock)
+weak_alias (__pthread_return_0, pthread_rwlockattr_destroy)
+weak_alias (__pthread_return_0, pthread_rwlockattr_getpshared)
+weak_alias (__pthread_return_0, pthread_rwlockattr_init)
+weak_alias (__pthread_return_0, pthread_rwlockattr_setpshared)
weak_alias (__pthread_return_0, pthread_self)
weak_alias (__pthread_return_0, pthread_setcancelstate)
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)
-/* 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)
-/* pthread_exit () is a special case. */
-void weak_function
-pthread_exit (void *retval)
+void weak_function pthread_exit (void *retval)
{
exit (EXIT_SUCCESS);
}
+*/
/**********************************************************************/
/* Weaks used internally by the C library. */