diff options
| author | Eric Andersen <andersen@codepoet.org> | 2006-12-09 01:32:13 +0000 | 
|---|---|---|
| committer | Eric Andersen <andersen@codepoet.org> | 2006-12-09 01:32:13 +0000 | 
| commit | 1f61bbd8a58e9255f45774541d76ed0bbdc05f09 (patch) | |
| tree | 5bc819f3bbd1fbd525d493cbd01ef288a3887611 | |
| parent | 808694e8a330e32741b7781467610d8cec99ae6e (diff) | |
silence a lot of warnings and fix a few genuine bugs while I'm at it.
| -rw-r--r-- | libc/misc/pthread/Makefile.in | 3 | ||||
| -rw-r--r-- | libc/misc/pthread/unlock.c | 26 | ||||
| -rw-r--r-- | libc/misc/pthread/weaks.c | 1 | ||||
| -rw-r--r-- | libc/sysdeps/linux/common/bits/uClibc_mutex.h | 2 | ||||
| -rw-r--r-- | libc/sysdeps/linux/common/bits/uClibc_pthread.h | 20 | 
5 files changed, 44 insertions, 8 deletions
diff --git a/libc/misc/pthread/Makefile.in b/libc/misc/pthread/Makefile.in index a768ac8f9..d0cf995a1 100644 --- a/libc/misc/pthread/Makefile.in +++ b/libc/misc/pthread/Makefile.in @@ -8,7 +8,8 @@  MISC_PTHREAD_DIR := $(top_srcdir)libc/misc/pthread  MISC_PTHREAD_OUT := $(top_builddir)libc/misc/pthread -libc-$(UCLIBC_HAS_THREADS) += $(MISC_PTHREAD_OUT)/weaks.o +libc-$(UCLIBC_HAS_THREADS) += $(MISC_PTHREAD_OUT)/unlock.o +libc-static-$(UCLIBC_HAS_THREADS) += $(MISC_PTHREAD_OUT)/weaks.o  objclean-y += misc_pthread_objclean diff --git a/libc/misc/pthread/unlock.c b/libc/misc/pthread/unlock.c new file mode 100644 index 000000000..b8adbd813 --- /dev/null +++ b/libc/misc/pthread/unlock.c @@ -0,0 +1,26 @@ +/* The weak pthread functions for Linux. +   Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc. +   This file is part of the GNU C Library. + +   The GNU C Library is free software; you can redistribute it and/or +   modify it under the terms of the GNU Library General Public License as +   published by the Free Software Foundation; either version 2 of the +   License, or (at your option) any later version. + +   The GNU C Library is distributed in the hope that it will be useful, +   but WITHOUT ANY WARRANTY; without even the implied warranty of +   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU +   Library General Public License for more details. + +   You should have received a copy of the GNU Library General Public +   License along with the GNU C Library; see the file COPYING.LIB.  If not, +   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, +   Boston, MA 02111-1307, USA.  */ + +#include <pthread.h> + +void attribute_hidden __uclibc_mutex_unlock (void *arg) +{ +	pthread_mutex_t *__mutex = (pthread_mutex_t *)arg; +	pthread_mutex_unlock(__mutex); +} diff --git a/libc/misc/pthread/weaks.c b/libc/misc/pthread/weaks.c index 1566846ca..580c3eb07 100644 --- a/libc/misc/pthread/weaks.c +++ b/libc/misc/pthread/weaks.c @@ -28,7 +28,6 @@   * if it gets linked in.   */ -static int __pthread_return_0 (void);  static int __pthread_return_0 (void) { return 0; }  static void __pthread_return_void (void) { return; } diff --git a/libc/sysdeps/linux/common/bits/uClibc_mutex.h b/libc/sysdeps/linux/common/bits/uClibc_mutex.h index 45b4b07df..257571efc 100644 --- a/libc/sysdeps/linux/common/bits/uClibc_mutex.h +++ b/libc/sysdeps/linux/common/bits/uClibc_mutex.h @@ -36,7 +36,7 @@  		struct _pthread_cleanup_buffer __infunc_pthread_cleanup_buffer;				\  		if (C) {										\  			_pthread_cleanup_push_defer(&__infunc_pthread_cleanup_buffer,			\ -										__pthread_mutex_unlock,	\ +										__uclibc_mutex_unlock,	\  										&(M));			\  			__pthread_mutex_lock(&(M));							\  		}											\ diff --git a/libc/sysdeps/linux/common/bits/uClibc_pthread.h b/libc/sysdeps/linux/common/bits/uClibc_pthread.h index 3d25ac4e8..367f380af 100644 --- a/libc/sysdeps/linux/common/bits/uClibc_pthread.h +++ b/libc/sysdeps/linux/common/bits/uClibc_pthread.h @@ -28,11 +28,21 @@  #endif  #if defined _LIBC && (defined IS_IN_libc || defined NOT_IN_libc) -extern int __pthread_mutex_init (pthread_mutex_t *__restrict __mutex, -		__const pthread_mutexattr_t *__restrict __mutex_attr) attribute_hidden; -extern int __pthread_mutex_trylock (pthread_mutex_t *__mutex) attribute_hidden; -extern int __pthread_mutex_lock (pthread_mutex_t *__mutex) attribute_hidden; -extern int __pthread_mutex_unlock (pthread_mutex_t *__mutex) attribute_hidden; +/* Threading functions internal to uClibc.  Make these thread functions + * weak so that we can elide them from single-threaded processes.  */ +extern int weak_function __pthread_mutex_init (pthread_mutex_t *__mutex, +		__const pthread_mutexattr_t *__mutex_attr); +extern int weak_function __pthread_mutex_destroy (pthread_mutex_t *__mutex); +extern int weak_function __pthread_mutex_lock (pthread_mutex_t *__mutex); +extern int weak_function __pthread_mutex_unlock (pthread_mutex_t *__mutex); +extern void __uclibc_mutex_unlock (void *) attribute_hidden; +extern int weak_function __pthread_mutex_trylock (pthread_mutex_t *__mutex); +extern void weak_function _pthread_cleanup_push_defer ( +		struct _pthread_cleanup_buffer *__buffer, +		void (*__routine) (void *), void *__arg); +extern void weak_function _pthread_cleanup_pop_restore ( +		struct _pthread_cleanup_buffer *__buffer, +		int __execute);  #endif  #endif  | 
