26#ifndef _GLIBCXX_GCC_GTHR_SINGLE_H
27#define _GLIBCXX_GCC_GTHR_SINGLE_H
31typedef int __gthread_key_t;
32typedef int __gthread_once_t;
33typedef int __gthread_mutex_t;
34typedef int __gthread_recursive_mutex_t;
36#define __GTHREAD_ONCE_INIT 0
37#define __GTHREAD_MUTEX_INIT 0
38#define __GTHREAD_MUTEX_INIT_FUNCTION(mx) do {} while (0)
39#define __GTHREAD_RECURSIVE_MUTEX_INIT 0
42# if __has_attribute(__always_inline__)
43# define __GTHREAD_ALWAYS_INLINE __attribute__((__always_inline__))
46#ifndef __GTHREAD_ALWAYS_INLINE
47# define __GTHREAD_ALWAYS_INLINE
51# define __GTHREAD_INLINE inline __GTHREAD_ALWAYS_INLINE
53# define __GTHREAD_INLINE static inline
56#define _GLIBCXX_UNUSED __attribute__((__unused__))
61static void *thread_local_storage = NULL;
67__gthread_objc_init_thread_system (
void)
75__gthread_objc_close_thread_system (
void)
84static inline objc_thread_t
85__gthread_objc_thread_detach (
void (* func)(
void *),
void * arg _GLIBCXX_UNUSED)
93__gthread_objc_thread_set_priority (
int priority _GLIBCXX_UNUSED)
101__gthread_objc_thread_get_priority (
void)
103 return OBJC_THREAD_INTERACTIVE_PRIORITY;
108__gthread_objc_thread_yield (
void)
115__gthread_objc_thread_exit (
void)
124static inline objc_thread_t
125__gthread_objc_thread_id (
void)
128 return (objc_thread_t) 1;
133__gthread_objc_thread_set_data (
void *value)
135 thread_local_storage = value;
141__gthread_objc_thread_get_data (
void)
143 return thread_local_storage;
150__gthread_objc_mutex_allocate (objc_mutex_t mutex _GLIBCXX_UNUSED)
157__gthread_objc_mutex_deallocate (objc_mutex_t mutex _GLIBCXX_UNUSED)
164__gthread_objc_mutex_lock (objc_mutex_t mutex _GLIBCXX_UNUSED)
172__gthread_objc_mutex_trylock (objc_mutex_t mutex _GLIBCXX_UNUSED)
180__gthread_objc_mutex_unlock (objc_mutex_t mutex _GLIBCXX_UNUSED)
189__gthread_objc_condition_allocate (objc_condition_t condition _GLIBCXX_UNUSED)
196__gthread_objc_condition_deallocate (objc_condition_t condition _GLIBCXX_UNUSED)
203__gthread_objc_condition_wait (objc_condition_t condition _GLIBCXX_UNUSED,
204 objc_mutex_t mutex _GLIBCXX_UNUSED)
211__gthread_objc_condition_broadcast (objc_condition_t condition _GLIBCXX_UNUSED)
218__gthread_objc_condition_signal (objc_condition_t condition _GLIBCXX_UNUSED)
226__gthread_active_p (
void)
232__gthread_once (__gthread_once_t *__once _GLIBCXX_UNUSED,
void (*__func) (
void) _GLIBCXX_UNUSED)
237__GTHREAD_INLINE
int _GLIBCXX_UNUSED
238__gthread_key_create (__gthread_key_t *__key _GLIBCXX_UNUSED,
void (*__func) (
void *) _GLIBCXX_UNUSED)
243__GTHREAD_INLINE
int _GLIBCXX_UNUSED
244__gthread_key_delete (__gthread_key_t __key _GLIBCXX_UNUSED)
249__GTHREAD_INLINE
void *
250__gthread_getspecific (__gthread_key_t __key _GLIBCXX_UNUSED)
256__gthread_setspecific (__gthread_key_t __key _GLIBCXX_UNUSED,
const void *__v _GLIBCXX_UNUSED)
262__gthread_mutex_destroy (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED)
268__gthread_mutex_lock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED)
274__gthread_mutex_trylock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED)
280__gthread_mutex_unlock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED)
286__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex)
288 return __gthread_mutex_lock (__mutex);
292__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex)
294 return __gthread_mutex_trylock (__mutex);
298__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex)
300 return __gthread_mutex_unlock (__mutex);
304__gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex)
306 return __gthread_mutex_destroy (__mutex);
311#undef _GLIBCXX_UNUSED
312#undef __GTHREAD_INLINE
313#undef __GTHREAD_ALWAYS_INLINE