1 /* Copyright (C) 2003 Manuel Novoa III
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.
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.
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/>.
18 /* Supply prototypes for the internal thread functions used by the
19 * uClibc library code.
22 #ifndef _UCLIBC_PTHREAD_H
23 #define _UCLIBC_PTHREAD_H
26 # error "Always include <pthread.h> rather than <bits/uClibc_pthread.h>"
29 struct _pthread_cleanup_buffer;
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;