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