1 /* Copyright (C) 2003 Manuel Novoa III 2 * 3 * This library is free software; you can redistribute it and/or 4 * modify it under the terms of the GNU Lesser General Public 5 * License as published by the Free Software Foundation; either 6 * version 2.1 of the License, or (at your option) any later version. 7 * 8 * The GNU C Library is distributed in the hope that it will be useful, 9 * but WITHOUT ANY WARRANTY; without even the implied warranty of 10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 11 * Lesser General Public License for more details. 12 * 13 * You should have received a copy of the GNU Lesser General Public 14 * License along with the GNU C Library; see the file COPYING.LIB. If 15 * not, see <http://www.gnu.org/licenses/>. 16 */ 17 18 /* Supply prototypes for the internal thread functions used by the 19 * uClibc library code. 20 */ 21 22 #ifndef _UCLIBC_PTHREAD_H 23 #define _UCLIBC_PTHREAD_H 24 25 #ifndef _PTHREAD_H 26 # error "Always include <pthread.h> rather than <bits/uClibc_pthread.h>" 27 #endif 28 29 struct _pthread_cleanup_buffer; 30 31 /* Threading functions internal to uClibc. Make these thread functions 32 * weak so that we can elide them from single-threaded processes. */ 33 extern int weak_function __pthread_mutex_init (pthread_mutex_t *__mutex, 34 const pthread_mutexattr_t *__mutex_attr); 35 extern int weak_function __pthread_mutex_lock (pthread_mutex_t *__mutex); 36 extern int weak_function __pthread_mutex_unlock (pthread_mutex_t *__mutex); 37 extern int weak_function __pthread_mutex_trylock (pthread_mutex_t *__mutex); 38 extern void weak_function _pthread_cleanup_push_defer ( 39 struct _pthread_cleanup_buffer *__buffer, 40 void (*__routine) (void *), void *__arg) /* L4 added: */ __THROW; 41 extern void weak_function _pthread_cleanup_pop_restore ( 42 struct _pthread_cleanup_buffer *__buffer, 43 int __execute) /* L4 added: */ __THROW; 44 45 #endif 46