1132718Skan/* POSIX threads dummy routines for systems without weak definitions.  */
2132718Skan/* Compile this one with gcc.  */
3171825Skan/* Copyright (C) 2003, 2004, 2005, 2007 Free Software Foundation, Inc.
4132718Skan
5132718SkanThis file is part of GCC.
6132718Skan
7132718SkanGCC is free software; you can redistribute it and/or modify it under
8132718Skanthe terms of the GNU General Public License as published by the Free
9132718SkanSoftware Foundation; either version 2, or (at your option) any later
10132718Skanversion.
11132718Skan
12132718SkanGCC is distributed in the hope that it will be useful, but WITHOUT ANY
13132718SkanWARRANTY; without even the implied warranty of MERCHANTABILITY or
14132718SkanFITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
15132718Skanfor more details.
16132718Skan
17132718SkanYou should have received a copy of the GNU General Public License
18132718Skanalong with GCC; see the file COPYING.  If not, write to the Free
19169689SkanSoftware Foundation, 51 Franklin Street, Fifth Floor, Boston, MA
20169689Skan02110-1301, USA.  */
21132718Skan
22132718Skan/* As a special exception, if you link this library with other files,
23132718Skan   some of which are compiled with GCC, to produce an executable,
24132718Skan   this library does not by itself cause the resulting executable
25132718Skan   to be covered by the GNU General Public License.
26132718Skan   This exception does not however invalidate any other reasons why
27132718Skan   the executable file might be covered by the GNU General Public License.  */
28132718Skan
29132718Skan#include "tconfig.h"
30132718Skan#include "tm.h"
31171825Skan# define __gthrw_pragma(pragma) _Pragma (#pragma)
32132718Skan/* Define so we provide weak definitions of functions used by libobjc only.  */
33132718Skan#define _LIBOBJC_WEAK
34132718Skan#include "gthr.h"
35132718Skan
36132718Skanint
37132718Skanpthread_once (pthread_once_t *once ATTRIBUTE_UNUSED,
38132718Skan	      void (*func) (void) ATTRIBUTE_UNUSED)
39132718Skan{
40132718Skan  return -1;
41132718Skan}
42132718Skan
43132718Skanint
44132718Skanpthread_key_create (pthread_key_t *key ATTRIBUTE_UNUSED,
45132718Skan		    void (*dtor) (void *) ATTRIBUTE_UNUSED)
46132718Skan{
47132718Skan  return -1;
48132718Skan}
49132718Skan
50132718Skanint
51132718Skanpthread_key_delete (pthread_key_t key ATTRIBUTE_UNUSED)
52132718Skan{
53132718Skan  return 0;
54132718Skan}
55132718Skan
56132718Skanvoid *
57132718Skanpthread_getspecific (pthread_key_t key ATTRIBUTE_UNUSED)
58132718Skan{
59132718Skan  return 0;
60132718Skan}
61132718Skan
62132718Skanint
63132718Skanpthread_setspecific (pthread_key_t key ATTRIBUTE_UNUSED,
64132718Skan		     const void *ptr ATTRIBUTE_UNUSED)
65132718Skan{
66132718Skan  return 0;
67132718Skan}
68132718Skan
69132718Skanint
70132718Skanpthread_create (pthread_t *thread ATTRIBUTE_UNUSED,
71132718Skan		const pthread_attr_t *attr ATTRIBUTE_UNUSED,
72132718Skan		void *(*start_routine) (void *) ATTRIBUTE_UNUSED,
73132718Skan		void *arg ATTRIBUTE_UNUSED)
74132718Skan{
75132718Skan  return 0;
76132718Skan}
77132718Skan
78132718Skanint
79171825Skanpthread_cancel (pthread_t thread ATTRIBUTE_UNUSED)
80169689Skan{
81169689Skan  return 0;
82169689Skan}
83169689Skan
84169689Skanint
85132718Skanpthread_mutex_lock (pthread_mutex_t *mutex ATTRIBUTE_UNUSED)
86132718Skan{
87132718Skan  return 0;
88132718Skan}
89132718Skan
90132718Skanint
91132718Skanpthread_mutex_trylock (pthread_mutex_t *mutex ATTRIBUTE_UNUSED)
92132718Skan{
93132718Skan  return 0;
94132718Skan}
95132718Skan
96132718Skanint
97132718Skanpthread_mutex_unlock (pthread_mutex_t *mutex ATTRIBUTE_UNUSED)
98132718Skan{
99132718Skan  return 0;
100132718Skan}
101132718Skan
102132718Skanint
103169689Skanpthread_mutexattr_init (pthread_mutexattr_t *attr ATTRIBUTE_UNUSED)
104169689Skan{
105169689Skan  return 0;
106169689Skan}
107169689Skan
108169689Skanint
109169689Skanpthread_mutexattr_settype (pthread_mutexattr_t *attr ATTRIBUTE_UNUSED,
110169689Skan			   int type ATTRIBUTE_UNUSED)
111169689Skan{
112169689Skan  return 0;
113169689Skan}
114169689Skan
115169689Skanint
116169689Skanpthread_mutexattr_destroy (pthread_mutexattr_t *attr ATTRIBUTE_UNUSED)
117169689Skan{
118169689Skan  return 0;
119169689Skan}
120169689Skan
121169689Skanint
122132718Skanpthread_cond_broadcast (pthread_cond_t *cond ATTRIBUTE_UNUSED)
123132718Skan{
124132718Skan  return 0;
125132718Skan}
126132718Skan
127132718Skanint
128132718Skanpthread_cond_destroy (pthread_cond_t *cond ATTRIBUTE_UNUSED)
129132718Skan{
130132718Skan  return 0;
131132718Skan}
132132718Skan
133132718Skanint
134132718Skanpthread_cond_init (pthread_cond_t *cond ATTRIBUTE_UNUSED,
135132718Skan		   const pthread_condattr_t *attr ATTRIBUTE_UNUSED)
136132718Skan{
137132718Skan  return 0;
138132718Skan}
139132718Skan
140132718Skanint
141132718Skanpthread_cond_signal (pthread_cond_t *cond ATTRIBUTE_UNUSED)
142132718Skan{
143132718Skan  return 0;
144132718Skan}
145132718Skan
146132718Skanint
147132718Skanpthread_cond_wait (pthread_cond_t *cond ATTRIBUTE_UNUSED,
148132718Skan		   pthread_mutex_t *mutex ATTRIBUTE_UNUSED)
149132718Skan{
150132718Skan  return 0;
151132718Skan}
152132718Skan
153132718Skanvoid
154132718Skanpthread_exit (void *value_ptr ATTRIBUTE_UNUSED)
155132718Skan{
156132718Skan}
157132718Skan
158132718Skanint
159132718Skanpthread_mutex_init (pthread_mutex_t *mutex ATTRIBUTE_UNUSED,
160132718Skan		    const pthread_mutexattr_t *attr ATTRIBUTE_UNUSED)
161132718Skan{
162132718Skan  return 0;
163132718Skan}
164132718Skan
165132718Skanint
166132718Skanpthread_mutex_destroy (pthread_mutex_t *mutex ATTRIBUTE_UNUSED)
167132718Skan{
168132718Skan  return 0;
169132718Skan}
170132718Skan
171132718Skanpthread_t
172132718Skanpthread_self (void)
173132718Skan{
174132718Skan  return (pthread_t) 0;
175132718Skan}
176169689Skan#ifdef _POSIX_PRIORITY_SCHEDULING
177132718Skan#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING
178132718Skanint
179132718Skansched_get_priority_max (int policy ATTRIBUTE_UNUSED)
180132718Skan{
181132718Skan  return 0;
182132718Skan}
183132718Skan
184132718Skanint
185132718Skansched_get_priority_min (int policy ATTRIBUTE_UNUSED)
186132718Skan{
187132718Skan  return 0;
188132718Skan}
189132718Skan#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */
190169689Skan#endif /* _POSIX_PRIORITY_SCHEDULING */
191132718Skan
192132718Skanint
193132718Skansched_yield (void)
194132718Skan{
195132718Skan  return 0;
196132718Skan}
197132718Skan
198132718Skanint
199132718Skanpthread_attr_destroy (pthread_attr_t *attr ATTRIBUTE_UNUSED)
200132718Skan{
201132718Skan  return 0;
202132718Skan}
203132718Skan
204132718Skanint
205132718Skanpthread_attr_init (pthread_attr_t *attr ATTRIBUTE_UNUSED)
206132718Skan{
207132718Skan  return 0;
208132718Skan}
209132718Skan
210132718Skanint
211132718Skanpthread_attr_setdetachstate (pthread_attr_t *attr ATTRIBUTE_UNUSED,
212132718Skan			     int detachstate ATTRIBUTE_UNUSED)
213132718Skan{
214132718Skan  return 0;
215132718Skan}
216132718Skan
217132718Skan#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING
218132718Skanint
219132718Skanpthread_getschedparam (pthread_t thread ATTRIBUTE_UNUSED,
220132718Skan		       int *policy ATTRIBUTE_UNUSED,
221132718Skan		       struct sched_param *param ATTRIBUTE_UNUSED)
222132718Skan{
223132718Skan  return 0;
224132718Skan}
225132718Skan
226132718Skanint
227132718Skanpthread_setschedparam (pthread_t thread ATTRIBUTE_UNUSED,
228132718Skan		       int policy ATTRIBUTE_UNUSED,
229132718Skan		       const struct sched_param *param ATTRIBUTE_UNUSED)
230132718Skan{
231132718Skan  return 0;
232132718Skan}
233132718Skan#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */
234132718Skan
235