xref: /minix3/external/gpl3/gcc/lib/libstdc++-v3/arch/earm/gthr-single.h (revision 0a6a1f1d05b60e214de2f05a7310ddd1f0e590e7)
1d19d7d58SLionel Sambuc /* This file is automatically generated.  DO NOT EDIT! */
2*0a6a1f1dSLionel Sambuc /* Generated from: NetBSD: mknative-gcc,v 1.70 2013/05/05 07:11:34 skrll Exp  */
3*0a6a1f1dSLionel Sambuc /* Generated from: NetBSD: mknative.common,v 1.8 2006/05/26 19:17:21 mrg Exp  */
4d19d7d58SLionel Sambuc 
5d19d7d58SLionel Sambuc /* Threads compatibility routines for libgcc2 and libobjc.  */
6d19d7d58SLionel Sambuc /* Compile this one with gcc.  */
7*0a6a1f1dSLionel Sambuc /* Copyright (C) 1997-2013 Free Software Foundation, Inc.
8d19d7d58SLionel Sambuc 
9d19d7d58SLionel Sambuc This file is part of GCC.
10d19d7d58SLionel Sambuc 
11d19d7d58SLionel Sambuc GCC is free software; you can redistribute it and/or modify it under
12d19d7d58SLionel Sambuc the terms of the GNU General Public License as published by the Free
13d19d7d58SLionel Sambuc Software Foundation; either version 3, or (at your option) any later
14d19d7d58SLionel Sambuc version.
15d19d7d58SLionel Sambuc 
16d19d7d58SLionel Sambuc GCC is distributed in the hope that it will be useful, but WITHOUT ANY
17d19d7d58SLionel Sambuc WARRANTY; without even the implied warranty of MERCHANTABILITY or
18d19d7d58SLionel Sambuc FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
19d19d7d58SLionel Sambuc for more details.
20d19d7d58SLionel Sambuc 
21d19d7d58SLionel Sambuc Under Section 7 of GPL version 3, you are granted additional
22d19d7d58SLionel Sambuc permissions described in the GCC Runtime Library Exception, version
23d19d7d58SLionel Sambuc 3.1, as published by the Free Software Foundation.
24d19d7d58SLionel Sambuc 
25d19d7d58SLionel Sambuc You should have received a copy of the GNU General Public License and
26d19d7d58SLionel Sambuc a copy of the GCC Runtime Library Exception along with this program;
27d19d7d58SLionel Sambuc see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
28d19d7d58SLionel Sambuc <http://www.gnu.org/licenses/>.  */
29d19d7d58SLionel Sambuc 
30d19d7d58SLionel Sambuc #ifndef _GLIBCXX_GCC_GTHR_SINGLE_H
31d19d7d58SLionel Sambuc #define _GLIBCXX_GCC_GTHR_SINGLE_H
32d19d7d58SLionel Sambuc 
33d19d7d58SLionel Sambuc /* Just provide compatibility for mutex handling.  */
34d19d7d58SLionel Sambuc 
35d19d7d58SLionel Sambuc typedef int __gthread_key_t;
36d19d7d58SLionel Sambuc typedef int __gthread_once_t;
37d19d7d58SLionel Sambuc typedef int __gthread_mutex_t;
38d19d7d58SLionel Sambuc typedef int __gthread_recursive_mutex_t;
39d19d7d58SLionel Sambuc 
40d19d7d58SLionel Sambuc #define __GTHREAD_ONCE_INIT 0
41d19d7d58SLionel Sambuc #define __GTHREAD_MUTEX_INIT 0
42*0a6a1f1dSLionel Sambuc #define __GTHREAD_MUTEX_INIT_FUNCTION(mx)
43d19d7d58SLionel Sambuc #define __GTHREAD_RECURSIVE_MUTEX_INIT 0
44d19d7d58SLionel Sambuc 
45d19d7d58SLionel Sambuc #define _GLIBCXX_UNUSED __attribute__((unused))
46d19d7d58SLionel Sambuc 
47d19d7d58SLionel Sambuc #ifdef _LIBOBJC
48d19d7d58SLionel Sambuc 
49d19d7d58SLionel Sambuc /* Thread local storage for a single thread */
50d19d7d58SLionel Sambuc static void *thread_local_storage = NULL;
51d19d7d58SLionel Sambuc 
52d19d7d58SLionel Sambuc /* Backend initialization functions */
53d19d7d58SLionel Sambuc 
54d19d7d58SLionel Sambuc /* Initialize the threads subsystem.  */
55d19d7d58SLionel Sambuc static inline int
__gthread_objc_init_thread_system(void)56d19d7d58SLionel Sambuc __gthread_objc_init_thread_system (void)
57d19d7d58SLionel Sambuc {
58d19d7d58SLionel Sambuc   /* No thread support available */
59d19d7d58SLionel Sambuc   return -1;
60d19d7d58SLionel Sambuc }
61d19d7d58SLionel Sambuc 
62d19d7d58SLionel Sambuc /* Close the threads subsystem.  */
63d19d7d58SLionel Sambuc static inline int
__gthread_objc_close_thread_system(void)64d19d7d58SLionel Sambuc __gthread_objc_close_thread_system (void)
65d19d7d58SLionel Sambuc {
66d19d7d58SLionel Sambuc   /* No thread support available */
67d19d7d58SLionel Sambuc   return -1;
68d19d7d58SLionel Sambuc }
69d19d7d58SLionel Sambuc 
70d19d7d58SLionel Sambuc /* Backend thread functions */
71d19d7d58SLionel Sambuc 
72d19d7d58SLionel Sambuc /* Create a new thread of execution.  */
73d19d7d58SLionel Sambuc static inline objc_thread_t
__gthread_objc_thread_detach(void (* func)(void *),void * arg _GLIBCXX_UNUSED)74d19d7d58SLionel Sambuc __gthread_objc_thread_detach (void (* func)(void *), void * arg _GLIBCXX_UNUSED)
75d19d7d58SLionel Sambuc {
76d19d7d58SLionel Sambuc   /* No thread support available */
77d19d7d58SLionel Sambuc   return NULL;
78d19d7d58SLionel Sambuc }
79d19d7d58SLionel Sambuc 
80d19d7d58SLionel Sambuc /* Set the current thread's priority.  */
81d19d7d58SLionel Sambuc static inline int
__gthread_objc_thread_set_priority(int priority _GLIBCXX_UNUSED)82d19d7d58SLionel Sambuc __gthread_objc_thread_set_priority (int priority _GLIBCXX_UNUSED)
83d19d7d58SLionel Sambuc {
84d19d7d58SLionel Sambuc   /* No thread support available */
85d19d7d58SLionel Sambuc   return -1;
86d19d7d58SLionel Sambuc }
87d19d7d58SLionel Sambuc 
88d19d7d58SLionel Sambuc /* Return the current thread's priority.  */
89d19d7d58SLionel Sambuc static inline int
__gthread_objc_thread_get_priority(void)90d19d7d58SLionel Sambuc __gthread_objc_thread_get_priority (void)
91d19d7d58SLionel Sambuc {
92d19d7d58SLionel Sambuc   return OBJC_THREAD_INTERACTIVE_PRIORITY;
93d19d7d58SLionel Sambuc }
94d19d7d58SLionel Sambuc 
95d19d7d58SLionel Sambuc /* Yield our process time to another thread.  */
96d19d7d58SLionel Sambuc static inline void
__gthread_objc_thread_yield(void)97d19d7d58SLionel Sambuc __gthread_objc_thread_yield (void)
98d19d7d58SLionel Sambuc {
99d19d7d58SLionel Sambuc   return;
100d19d7d58SLionel Sambuc }
101d19d7d58SLionel Sambuc 
102d19d7d58SLionel Sambuc /* Terminate the current thread.  */
103d19d7d58SLionel Sambuc static inline int
__gthread_objc_thread_exit(void)104d19d7d58SLionel Sambuc __gthread_objc_thread_exit (void)
105d19d7d58SLionel Sambuc {
106d19d7d58SLionel Sambuc   /* No thread support available */
107d19d7d58SLionel Sambuc   /* Should we really exit the program */
108d19d7d58SLionel Sambuc   /* exit (&__objc_thread_exit_status); */
109d19d7d58SLionel Sambuc   return -1;
110d19d7d58SLionel Sambuc }
111d19d7d58SLionel Sambuc 
112d19d7d58SLionel Sambuc /* Returns an integer value which uniquely describes a thread.  */
113d19d7d58SLionel Sambuc static inline objc_thread_t
__gthread_objc_thread_id(void)114d19d7d58SLionel Sambuc __gthread_objc_thread_id (void)
115d19d7d58SLionel Sambuc {
116d19d7d58SLionel Sambuc   /* No thread support, use 1.  */
117d19d7d58SLionel Sambuc   return (objc_thread_t) 1;
118d19d7d58SLionel Sambuc }
119d19d7d58SLionel Sambuc 
120d19d7d58SLionel Sambuc /* Sets the thread's local storage pointer.  */
121d19d7d58SLionel Sambuc static inline int
__gthread_objc_thread_set_data(void * value)122d19d7d58SLionel Sambuc __gthread_objc_thread_set_data (void *value)
123d19d7d58SLionel Sambuc {
124d19d7d58SLionel Sambuc   thread_local_storage = value;
125d19d7d58SLionel Sambuc   return 0;
126d19d7d58SLionel Sambuc }
127d19d7d58SLionel Sambuc 
128d19d7d58SLionel Sambuc /* Returns the thread's local storage pointer.  */
129d19d7d58SLionel Sambuc static inline void *
__gthread_objc_thread_get_data(void)130d19d7d58SLionel Sambuc __gthread_objc_thread_get_data (void)
131d19d7d58SLionel Sambuc {
132d19d7d58SLionel Sambuc   return thread_local_storage;
133d19d7d58SLionel Sambuc }
134d19d7d58SLionel Sambuc 
135d19d7d58SLionel Sambuc /* Backend mutex functions */
136d19d7d58SLionel Sambuc 
137d19d7d58SLionel Sambuc /* Allocate a mutex.  */
138d19d7d58SLionel Sambuc static inline int
__gthread_objc_mutex_allocate(objc_mutex_t mutex _GLIBCXX_UNUSED)139d19d7d58SLionel Sambuc __gthread_objc_mutex_allocate (objc_mutex_t mutex _GLIBCXX_UNUSED)
140d19d7d58SLionel Sambuc {
141d19d7d58SLionel Sambuc   return 0;
142d19d7d58SLionel Sambuc }
143d19d7d58SLionel Sambuc 
144d19d7d58SLionel Sambuc /* Deallocate a mutex.  */
145d19d7d58SLionel Sambuc static inline int
__gthread_objc_mutex_deallocate(objc_mutex_t mutex _GLIBCXX_UNUSED)146d19d7d58SLionel Sambuc __gthread_objc_mutex_deallocate (objc_mutex_t mutex _GLIBCXX_UNUSED)
147d19d7d58SLionel Sambuc {
148d19d7d58SLionel Sambuc   return 0;
149d19d7d58SLionel Sambuc }
150d19d7d58SLionel Sambuc 
151d19d7d58SLionel Sambuc /* Grab a lock on a mutex.  */
152d19d7d58SLionel Sambuc static inline int
__gthread_objc_mutex_lock(objc_mutex_t mutex _GLIBCXX_UNUSED)153d19d7d58SLionel Sambuc __gthread_objc_mutex_lock (objc_mutex_t mutex _GLIBCXX_UNUSED)
154d19d7d58SLionel Sambuc {
155d19d7d58SLionel Sambuc   /* There can only be one thread, so we always get the lock */
156d19d7d58SLionel Sambuc   return 0;
157d19d7d58SLionel Sambuc }
158d19d7d58SLionel Sambuc 
159d19d7d58SLionel Sambuc /* Try to grab a lock on a mutex.  */
160d19d7d58SLionel Sambuc static inline int
__gthread_objc_mutex_trylock(objc_mutex_t mutex _GLIBCXX_UNUSED)161d19d7d58SLionel Sambuc __gthread_objc_mutex_trylock (objc_mutex_t mutex _GLIBCXX_UNUSED)
162d19d7d58SLionel Sambuc {
163d19d7d58SLionel Sambuc   /* There can only be one thread, so we always get the lock */
164d19d7d58SLionel Sambuc   return 0;
165d19d7d58SLionel Sambuc }
166d19d7d58SLionel Sambuc 
167d19d7d58SLionel Sambuc /* Unlock the mutex */
168d19d7d58SLionel Sambuc static inline int
__gthread_objc_mutex_unlock(objc_mutex_t mutex _GLIBCXX_UNUSED)169d19d7d58SLionel Sambuc __gthread_objc_mutex_unlock (objc_mutex_t mutex _GLIBCXX_UNUSED)
170d19d7d58SLionel Sambuc {
171d19d7d58SLionel Sambuc   return 0;
172d19d7d58SLionel Sambuc }
173d19d7d58SLionel Sambuc 
174d19d7d58SLionel Sambuc /* Backend condition mutex functions */
175d19d7d58SLionel Sambuc 
176d19d7d58SLionel Sambuc /* Allocate a condition.  */
177d19d7d58SLionel Sambuc static inline int
__gthread_objc_condition_allocate(objc_condition_t condition _GLIBCXX_UNUSED)178d19d7d58SLionel Sambuc __gthread_objc_condition_allocate (objc_condition_t condition _GLIBCXX_UNUSED)
179d19d7d58SLionel Sambuc {
180d19d7d58SLionel Sambuc   return 0;
181d19d7d58SLionel Sambuc }
182d19d7d58SLionel Sambuc 
183d19d7d58SLionel Sambuc /* Deallocate a condition.  */
184d19d7d58SLionel Sambuc static inline int
__gthread_objc_condition_deallocate(objc_condition_t condition _GLIBCXX_UNUSED)185d19d7d58SLionel Sambuc __gthread_objc_condition_deallocate (objc_condition_t condition _GLIBCXX_UNUSED)
186d19d7d58SLionel Sambuc {
187d19d7d58SLionel Sambuc   return 0;
188d19d7d58SLionel Sambuc }
189d19d7d58SLionel Sambuc 
190d19d7d58SLionel Sambuc /* Wait on the condition */
191d19d7d58SLionel Sambuc static inline int
__gthread_objc_condition_wait(objc_condition_t condition _GLIBCXX_UNUSED,objc_mutex_t mutex _GLIBCXX_UNUSED)192d19d7d58SLionel Sambuc __gthread_objc_condition_wait (objc_condition_t condition _GLIBCXX_UNUSED,
193d19d7d58SLionel Sambuc 			       objc_mutex_t mutex _GLIBCXX_UNUSED)
194d19d7d58SLionel Sambuc {
195d19d7d58SLionel Sambuc   return 0;
196d19d7d58SLionel Sambuc }
197d19d7d58SLionel Sambuc 
198d19d7d58SLionel Sambuc /* Wake up all threads waiting on this condition.  */
199d19d7d58SLionel Sambuc static inline int
__gthread_objc_condition_broadcast(objc_condition_t condition _GLIBCXX_UNUSED)200d19d7d58SLionel Sambuc __gthread_objc_condition_broadcast (objc_condition_t condition _GLIBCXX_UNUSED)
201d19d7d58SLionel Sambuc {
202d19d7d58SLionel Sambuc   return 0;
203d19d7d58SLionel Sambuc }
204d19d7d58SLionel Sambuc 
205d19d7d58SLionel Sambuc /* Wake up one thread waiting on this condition.  */
206d19d7d58SLionel Sambuc static inline int
__gthread_objc_condition_signal(objc_condition_t condition _GLIBCXX_UNUSED)207d19d7d58SLionel Sambuc __gthread_objc_condition_signal (objc_condition_t condition _GLIBCXX_UNUSED)
208d19d7d58SLionel Sambuc {
209d19d7d58SLionel Sambuc   return 0;
210d19d7d58SLionel Sambuc }
211d19d7d58SLionel Sambuc 
212d19d7d58SLionel Sambuc #else /* _LIBOBJC */
213d19d7d58SLionel Sambuc 
214d19d7d58SLionel Sambuc static inline int
__gthread_active_p(void)215d19d7d58SLionel Sambuc __gthread_active_p (void)
216d19d7d58SLionel Sambuc {
217d19d7d58SLionel Sambuc   return 0;
218d19d7d58SLionel Sambuc }
219d19d7d58SLionel Sambuc 
220d19d7d58SLionel Sambuc static inline int
__gthread_once(__gthread_once_t * __once _GLIBCXX_UNUSED,void (* __func)(void)_GLIBCXX_UNUSED)221d19d7d58SLionel Sambuc __gthread_once (__gthread_once_t *__once _GLIBCXX_UNUSED, void (*__func) (void) _GLIBCXX_UNUSED)
222d19d7d58SLionel Sambuc {
223d19d7d58SLionel Sambuc   return 0;
224d19d7d58SLionel Sambuc }
225d19d7d58SLionel Sambuc 
226d19d7d58SLionel Sambuc static inline int _GLIBCXX_UNUSED
__gthread_key_create(__gthread_key_t * __key _GLIBCXX_UNUSED,void (* __func)(void *)_GLIBCXX_UNUSED)227d19d7d58SLionel Sambuc __gthread_key_create (__gthread_key_t *__key _GLIBCXX_UNUSED, void (*__func) (void *) _GLIBCXX_UNUSED)
228d19d7d58SLionel Sambuc {
229d19d7d58SLionel Sambuc   return 0;
230d19d7d58SLionel Sambuc }
231d19d7d58SLionel Sambuc 
232d19d7d58SLionel Sambuc static int _GLIBCXX_UNUSED
__gthread_key_delete(__gthread_key_t __key _GLIBCXX_UNUSED)233d19d7d58SLionel Sambuc __gthread_key_delete (__gthread_key_t __key _GLIBCXX_UNUSED)
234d19d7d58SLionel Sambuc {
235d19d7d58SLionel Sambuc   return 0;
236d19d7d58SLionel Sambuc }
237d19d7d58SLionel Sambuc 
238d19d7d58SLionel Sambuc static inline void *
__gthread_getspecific(__gthread_key_t __key _GLIBCXX_UNUSED)239d19d7d58SLionel Sambuc __gthread_getspecific (__gthread_key_t __key _GLIBCXX_UNUSED)
240d19d7d58SLionel Sambuc {
241d19d7d58SLionel Sambuc   return 0;
242d19d7d58SLionel Sambuc }
243d19d7d58SLionel Sambuc 
244d19d7d58SLionel Sambuc static inline int
__gthread_setspecific(__gthread_key_t __key _GLIBCXX_UNUSED,const void * __v _GLIBCXX_UNUSED)245d19d7d58SLionel Sambuc __gthread_setspecific (__gthread_key_t __key _GLIBCXX_UNUSED, const void *__v _GLIBCXX_UNUSED)
246d19d7d58SLionel Sambuc {
247d19d7d58SLionel Sambuc   return 0;
248d19d7d58SLionel Sambuc }
249d19d7d58SLionel Sambuc 
250d19d7d58SLionel Sambuc static inline int
__gthread_mutex_destroy(__gthread_mutex_t * __mutex _GLIBCXX_UNUSED)251d19d7d58SLionel Sambuc __gthread_mutex_destroy (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED)
252d19d7d58SLionel Sambuc {
253d19d7d58SLionel Sambuc   return 0;
254d19d7d58SLionel Sambuc }
255d19d7d58SLionel Sambuc 
256d19d7d58SLionel Sambuc static inline int
__gthread_mutex_lock(__gthread_mutex_t * __mutex _GLIBCXX_UNUSED)257d19d7d58SLionel Sambuc __gthread_mutex_lock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED)
258d19d7d58SLionel Sambuc {
259d19d7d58SLionel Sambuc   return 0;
260d19d7d58SLionel Sambuc }
261d19d7d58SLionel Sambuc 
262d19d7d58SLionel Sambuc static inline int
__gthread_mutex_trylock(__gthread_mutex_t * __mutex _GLIBCXX_UNUSED)263d19d7d58SLionel Sambuc __gthread_mutex_trylock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED)
264d19d7d58SLionel Sambuc {
265d19d7d58SLionel Sambuc   return 0;
266d19d7d58SLionel Sambuc }
267d19d7d58SLionel Sambuc 
268d19d7d58SLionel Sambuc static inline int
__gthread_mutex_unlock(__gthread_mutex_t * __mutex _GLIBCXX_UNUSED)269d19d7d58SLionel Sambuc __gthread_mutex_unlock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED)
270d19d7d58SLionel Sambuc {
271d19d7d58SLionel Sambuc   return 0;
272d19d7d58SLionel Sambuc }
273d19d7d58SLionel Sambuc 
274d19d7d58SLionel Sambuc static inline int
__gthread_recursive_mutex_lock(__gthread_recursive_mutex_t * __mutex)275d19d7d58SLionel Sambuc __gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex)
276d19d7d58SLionel Sambuc {
277d19d7d58SLionel Sambuc   return __gthread_mutex_lock (__mutex);
278d19d7d58SLionel Sambuc }
279d19d7d58SLionel Sambuc 
280d19d7d58SLionel Sambuc static inline int
__gthread_recursive_mutex_trylock(__gthread_recursive_mutex_t * __mutex)281d19d7d58SLionel Sambuc __gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex)
282d19d7d58SLionel Sambuc {
283d19d7d58SLionel Sambuc   return __gthread_mutex_trylock (__mutex);
284d19d7d58SLionel Sambuc }
285d19d7d58SLionel Sambuc 
286d19d7d58SLionel Sambuc static inline int
__gthread_recursive_mutex_unlock(__gthread_recursive_mutex_t * __mutex)287d19d7d58SLionel Sambuc __gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex)
288d19d7d58SLionel Sambuc {
289d19d7d58SLionel Sambuc   return __gthread_mutex_unlock (__mutex);
290d19d7d58SLionel Sambuc }
291d19d7d58SLionel Sambuc 
292*0a6a1f1dSLionel Sambuc static inline int
__gthread_recursive_mutex_destroy(__gthread_recursive_mutex_t * __mutex)293*0a6a1f1dSLionel Sambuc __gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex)
294*0a6a1f1dSLionel Sambuc {
295*0a6a1f1dSLionel Sambuc   return __gthread_mutex_destroy (__mutex);
296*0a6a1f1dSLionel Sambuc }
297*0a6a1f1dSLionel Sambuc 
298d19d7d58SLionel Sambuc #endif /* _LIBOBJC */
299d19d7d58SLionel Sambuc 
300d19d7d58SLionel Sambuc #undef _GLIBCXX_UNUSED
301d19d7d58SLionel Sambuc 
302d19d7d58SLionel Sambuc #endif /* ! _GLIBCXX_GCC_GTHR_SINGLE_H */
303