xref: /aoo42x/main/sal/osl/unx/system.h (revision e15a4534)
19eab2a37SAndrew Rist /**************************************************************
2cdf0e10cSrcweir  *
39eab2a37SAndrew Rist  * Licensed to the Apache Software Foundation (ASF) under one
49eab2a37SAndrew Rist  * or more contributor license agreements.  See the NOTICE file
59eab2a37SAndrew Rist  * distributed with this work for additional information
69eab2a37SAndrew Rist  * regarding copyright ownership.  The ASF licenses this file
79eab2a37SAndrew Rist  * to you under the Apache License, Version 2.0 (the
89eab2a37SAndrew Rist  * "License"); you may not use this file except in compliance
99eab2a37SAndrew Rist  * with the License.  You may obtain a copy of the License at
109eab2a37SAndrew Rist  *
119eab2a37SAndrew Rist  *   http://www.apache.org/licenses/LICENSE-2.0
129eab2a37SAndrew Rist  *
139eab2a37SAndrew Rist  * Unless required by applicable law or agreed to in writing,
149eab2a37SAndrew Rist  * software distributed under the License is distributed on an
159eab2a37SAndrew Rist  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
169eab2a37SAndrew Rist  * KIND, either express or implied.  See the License for the
179eab2a37SAndrew Rist  * specific language governing permissions and limitations
189eab2a37SAndrew Rist  * under the License.
199eab2a37SAndrew Rist  *
209eab2a37SAndrew Rist  *************************************************************/
219eab2a37SAndrew Rist 
229eab2a37SAndrew Rist 
23cdf0e10cSrcweir 
24cdf0e10cSrcweir #ifndef __OSL_SYSTEM_H__
25cdf0e10cSrcweir #define __OSL_SYSTEM_H__
26cdf0e10cSrcweir 
27cdf0e10cSrcweir #include <stdio.h>
28cdf0e10cSrcweir #include <stdlib.h>
29cdf0e10cSrcweir #include <limits.h>
30cdf0e10cSrcweir #include <string.h>
31cdf0e10cSrcweir #include <errno.h>
32cdf0e10cSrcweir #include <stdarg.h>
33cdf0e10cSrcweir 
34cdf0e10cSrcweir #include <unistd.h>
35cdf0e10cSrcweir #include <fcntl.h>
36cdf0e10cSrcweir #include <dirent.h>
37cdf0e10cSrcweir #include <signal.h>
38cdf0e10cSrcweir #include <utime.h>
39cdf0e10cSrcweir 
40cdf0e10cSrcweir #include <pwd.h>
41cdf0e10cSrcweir 
42cdf0e10cSrcweir #include <netdb.h>
43cdf0e10cSrcweir 
44cdf0e10cSrcweir #include <sys/stat.h>
45cdf0e10cSrcweir #include <sys/wait.h>
46cdf0e10cSrcweir 
47cdf0e10cSrcweir #include <sys/types.h>
48cdf0e10cSrcweir 
49cdf0e10cSrcweir /* Make sockets of type AF_UNIX use underlying FS rights */
50cdf0e10cSrcweir #ifdef SOLARIS
51cdf0e10cSrcweir #	define _XOPEN_SOURCE 500
52cdf0e10cSrcweir #	include <sys/socket.h>
53cdf0e10cSrcweir #	undef _XOPEN_SOURCE
54cdf0e10cSrcweir #else
55cdf0e10cSrcweir #	include <sys/socket.h>
56cdf0e10cSrcweir #endif
57cdf0e10cSrcweir 
58cdf0e10cSrcweir #include <netinet/in.h>
59cdf0e10cSrcweir #include <arpa/inet.h>
60cdf0e10cSrcweir 
61cdf0e10cSrcweir #ifdef SYSV
62cdf0e10cSrcweir #   include <sys/utsname.h>
63cdf0e10cSrcweir #endif
64cdf0e10cSrcweir 
65cdf0e10cSrcweir #ifdef LINUX
66cdf0e10cSrcweir #   ifndef __USE_GNU
67cdf0e10cSrcweir #   define __USE_GNU
68cdf0e10cSrcweir #   endif
69cdf0e10cSrcweir 
70cdf0e10cSrcweir #if GLIBC >= 2
71cdf0e10cSrcweir #   include <shadow.h>
72cdf0e10cSrcweir #   include <pthread.h>
73cdf0e10cSrcweir #   include <sys/file.h>
74cdf0e10cSrcweir #   include <sys/ioctl.h>
75cdf0e10cSrcweir #	include <sys/uio.h>
76cdf0e10cSrcweir #	include <sys/un.h>
77cdf0e10cSrcweir #   include <netinet/tcp.h>
78cdf0e10cSrcweir #   include <dlfcn.h>
79cdf0e10cSrcweir #	include <endian.h>
80cdf0e10cSrcweir #	include <sys/time.h>
81cdf0e10cSrcweir #	include <semaphore.h>
82cdf0e10cSrcweir #	if __BYTE_ORDER == __LITTLE_ENDIAN
83cdf0e10cSrcweir #		define _LITTLE_ENDIAN
84cdf0e10cSrcweir #	elif __BYTE_ORDER == __BIG_ENDIAN
85cdf0e10cSrcweir #               ifndef _BIG_ENDIAN
86cdf0e10cSrcweir #               define _BIG_ENDIAN
87cdf0e10cSrcweir #               endif
88cdf0e10cSrcweir #	elif __BYTE_ORDER == __PDP_ENDIAN
89cdf0e10cSrcweir #		define _PDP_ENDIAN
90cdf0e10cSrcweir #	endif
91cdf0e10cSrcweir #	define 	IORESOURCE_TRANSFER_BSD
92cdf0e10cSrcweir #	define 	IOCHANNEL_TRANSFER_BSD_RENO
93cdf0e10cSrcweir #	define	pthread_testcancel()
94cdf0e10cSrcweir #	define  NO_PTHREAD_PRIORITY
95cdf0e10cSrcweir #	define  PTHREAD_SIGACTION 			pthread_sigaction
96cdf0e10cSrcweir #else
97cdf0e10cSrcweir #   include <shadow.h>
98cdf0e10cSrcweir #   include <asm/sigcontext.h>
99cdf0e10cSrcweir #   include <pthread.h>
100cdf0e10cSrcweir #   include <sys/file.h>
101cdf0e10cSrcweir #   include <sys/ioctl.h>
102cdf0e10cSrcweir #   include <linux/net.h>
103cdf0e10cSrcweir #	include <sys/un.h>
104cdf0e10cSrcweir #   include <netinet/tcp.h>
105cdf0e10cSrcweir #   include <linux/elfcore.h>
106cdf0e10cSrcweir #   include <dlfcn.h>
107cdf0e10cSrcweir #	include <endian.h>
108cdf0e10cSrcweir #	if __BYTE_ORDER == __LITTLE_ENDIAN
109cdf0e10cSrcweir #		define _LITTLE_ENDIAN
110cdf0e10cSrcweir #	elif __BYTE_ORDER == __BIG_ENDIAN
111cdf0e10cSrcweir #		define _BIG_ENDIAN
112cdf0e10cSrcweir #	elif __BYTE_ORDER == __PDP_ENDIAN
113cdf0e10cSrcweir #		define _PDP_ENDIAN
114cdf0e10cSrcweir #	endif
115cdf0e10cSrcweir #	define 	IORESOURCE_TRANSFER_BSD
116cdf0e10cSrcweir #	define 	IOCHANNEL_TRANSFER_BSD_RENO
117cdf0e10cSrcweir #	define	pthread_testcancel()
118cdf0e10cSrcweir #	define  NO_PTHREAD_RTL
119cdf0e10cSrcweir #	define  NO_PTHREAD_PRIORITY
120cdf0e10cSrcweir #	define  PTHREAD_SIGACTION 			pthread_sigaction
121cdf0e10cSrcweir #endif
122cdf0e10cSrcweir 
123cdf0e10cSrcweir #   ifndef ETIME
124cdf0e10cSrcweir #       define ETIME ETIMEDOUT
125cdf0e10cSrcweir #   endif
126cdf0e10cSrcweir 
127cdf0e10cSrcweir #endif
128cdf0e10cSrcweir 
129*e15a4534Spfg #include <osl/endian.h>
130*e15a4534Spfg 
131cdf0e10cSrcweir #ifdef NETBSD
132cdf0e10cSrcweir #	define  ETIME ETIMEDOUT
133cdf0e10cSrcweir #	define _POSIX_THREAD_SYSCALL_SOFT 1
134cdf0e10cSrcweir #	include <pthread.h>
135cdf0e10cSrcweir #	include <netdb.h>
136cdf0e10cSrcweir #	include <sys/sem.h>
137cdf0e10cSrcweir #	include <sys/exec.h>
138cdf0e10cSrcweir #	include <sys/filio.h>
139cdf0e10cSrcweir #	include <sys/ioctl.h>
140cdf0e10cSrcweir #	include <sys/time.h>
141cdf0e10cSrcweir #	include <sys/un.h>
142cdf0e10cSrcweir #	include <netinet/tcp.h>
143cdf0e10cSrcweir #	include <dlfcn.h>
144cdf0e10cSrcweir #   include <machine/endian.h>
145cdf0e10cSrcweir #   if BYTE_ORDER == LITTLE_ENDIAN
146cdf0e10cSrcweir #   	define _LITTLE_ENDIAN_OO
147cdf0e10cSrcweir #   elif BYTE_ORDER == BIG_ENDIAN
148cdf0e10cSrcweir #   	define _BIG_ENDIAN_OO
149cdf0e10cSrcweir #   elif BYTE_ORDER == PDP_ENDIAN
150cdf0e10cSrcweir #   	define _PDP_ENDIAN_OO
151cdf0e10cSrcweir #   endif
152cdf0e10cSrcweir #	define 	IORESOURCE_TRANSFER_BSD
153cdf0e10cSrcweir #	define 	IOCHANNEL_TRANSFER_BSD_RENO
154cdf0e10cSrcweir #	define	pthread_testcancel()
155cdf0e10cSrcweir #	define  NO_PTHREAD_PRIORITY
156cdf0e10cSrcweir #     define  NO_PTHREAD_SEMAPHORES
157cdf0e10cSrcweir #	define  NO_PTHREAD_RTL
158cdf0e10cSrcweir #	define  PTHREAD_SIGACTION 			pthread_sigaction
159cdf0e10cSrcweir #endif
160cdf0e10cSrcweir 
161cdf0e10cSrcweir #ifdef FREEBSD
162cdf0e10cSrcweir #   define  ETIME ETIMEDOUT
163cdf0e10cSrcweir #   include <pthread.h>
164cdf0e10cSrcweir #   include <sys/sem.h>
165cdf0e10cSrcweir #   include <semaphore.h>
166cdf0e10cSrcweir #   include <dlfcn.h>
167cdf0e10cSrcweir #   include <sys/filio.h>
168cdf0e10cSrcweir #   include <sys/ioctl.h>
169cdf0e10cSrcweir #   include <sys/param.h>
170cdf0e10cSrcweir #   include <sys/time.h>
171cdf0e10cSrcweir #   include <sys/uio.h>
172cdf0e10cSrcweir #   include <sys/exec.h>
173cdf0e10cSrcweir #   include <vm/vm.h>
174cdf0e10cSrcweir #   include <vm/vm_param.h>
175cdf0e10cSrcweir #   include <vm/pmap.h>
176cdf0e10cSrcweir #   include <vm/swap_pager.h>
177cdf0e10cSrcweir #	include <sys/un.h>
178cdf0e10cSrcweir #   include <netinet/tcp.h>
179cdf0e10cSrcweir #	define 	IORESOURCE_TRANSFER_BSD
180cdf0e10cSrcweir #   include <machine/endian.h>
181cdf0e10cSrcweir #   if BYTE_ORDER == LITTLE_ENDIAN
182*e15a4534Spfg #   	undef _BIG_ENDIAN
183cdf0e10cSrcweir #   elif BYTE_ORDER == BIG_ENDIAN
184*e15a4534Spfg #   	undef _LITTLE_ENDIAN
185cdf0e10cSrcweir #   elif BYTE_ORDER == PDP_ENDIAN
186cdf0e10cSrcweir #   	define _PDP_ENDIAN
187cdf0e10cSrcweir #   endif
188cdf0e10cSrcweir #	define  NO_PTHREAD_RTL
189cdf0e10cSrcweir #endif
190cdf0e10cSrcweir 
191cdf0e10cSrcweir #ifdef SCO
192cdf0e10cSrcweir #   define AF_IPX -1
193cdf0e10cSrcweir #	include <strings.h>
194cdf0e10cSrcweir #	include <pthread.h>
195cdf0e10cSrcweir #	include <shadow.h>
196cdf0e10cSrcweir #	include <netdb.h>
197cdf0e10cSrcweir #	include <sys/un.h>
198cdf0e10cSrcweir #	include <sys/netinet/tcp.h>
199cdf0e10cSrcweir #   include <sys/types.h>
200cdf0e10cSrcweir #   include <sys/byteorder.h>
201cdf0e10cSrcweir #   include <dlfcn.h>
202cdf0e10cSrcweir #   if BYTE_ORDER == LITTLE_ENDIAN
203cdf0e10cSrcweir #   	define _LITTLE_ENDIAN
204cdf0e10cSrcweir #   elif BYTE_ORDER == BIG_ENDIAN
205cdf0e10cSrcweir #   	define _BIG_ENDIAN
206cdf0e10cSrcweir #   elif BYTE_ORDER == PDP_ENDIAN
207cdf0e10cSrcweir #   	define _PDP_ENDIAN
208cdf0e10cSrcweir #   endif
209cdf0e10cSrcweir #	define  sched_yield() 				pthread_yield()
210cdf0e10cSrcweir #	define	pthread_testcancel()
211cdf0e10cSrcweir #	define  NO_PTHREAD_RTL
212cdf0e10cSrcweir #	define  NO_PTHREAD_PRIORITY
213cdf0e10cSrcweir extern int pthread_cancel(pthread_t);
214cdf0e10cSrcweir extern unsigned int nanosleep(unsigned int);
215cdf0e10cSrcweir #	define  SLEEP_TIMESPEC(timespec)  	(timespec .tv_sec > 0) ? sleep(timespec .tv_sec), nanosleep(timespec .tv_nsec) : nanosleep(timespec .tv_nsec)
216cdf0e10cSrcweir #	define  PATH_MAX 					_POSIX_PATH_MAX
217cdf0e10cSrcweir #	define	S_ISSOCK					S_ISFIFO
218cdf0e10cSrcweir #	define	PTHREAD_SIGACTION 			pthread_sigaction
219cdf0e10cSrcweir #	define	STAT_PARENT					stat
220cdf0e10cSrcweir #endif
221cdf0e10cSrcweir 
222cdf0e10cSrcweir #ifdef AIX
223cdf0e10cSrcweir #   define AF_IPX -1
224cdf0e10cSrcweir #	include <strings.h>
225cdf0e10cSrcweir #	include <pthread.h>
226cdf0e10cSrcweir #	include <sys/time.h>
227cdf0e10cSrcweir #	include <sys/un.h>
228cdf0e10cSrcweir #	include <netinet/tcp.h>
229cdf0e10cSrcweir #	include <sys/machine.h>
230cdf0e10cSrcweir #   if BYTE_ORDER == LITTLE_ENDIAN
231cdf0e10cSrcweir #   	define _LITTLE_ENDIAN
232cdf0e10cSrcweir #   elif BYTE_ORDER == BIG_ENDIAN
233cdf0e10cSrcweir #   	define _BIG_ENDIAN
234cdf0e10cSrcweir #   elif BYTE_ORDER == PDP_ENDIAN
235cdf0e10cSrcweir #   	define _PDP_ENDIAN
236cdf0e10cSrcweir #   endif
237cdf0e10cSrcweir #	define  sched_yield() 				pthread_yield()
238cdf0e10cSrcweir #	define  SLEEP_TIMESPEC(timespec)  	nsleep(&timespec, 0)
239cdf0e10cSrcweir #	define  LIBPATH "LIBPATH"
240cdf0e10cSrcweir #	define  NO_PTHREAD_SEMAPHORES
241cdf0e10cSrcweir #   define  NO_DL_FUNCTIONS
242cdf0e10cSrcweir #endif
243cdf0e10cSrcweir 
244cdf0e10cSrcweir #ifdef HPUX
245cdf0e10cSrcweir #   define  AF_IPX -1
246cdf0e10cSrcweir #   undef	howmany
247cdf0e10cSrcweir #   undef	MAXINT
248cdf0e10cSrcweir #	include <pthread.h>
249cdf0e10cSrcweir #	include <sys/un.h>
250cdf0e10cSrcweir #	include <sys/sched.h>
251cdf0e10cSrcweir #	include <sys/xti.h>
252cdf0e10cSrcweir #	include <sys/pstat.h>
253cdf0e10cSrcweir #	include <shadow.h>
254cdf0e10cSrcweir #	include <crypt.h>
255cdf0e10cSrcweir #	include <machine/param.h>
256cdf0e10cSrcweir #	define  LIBPATH "SHLIB_PATH"
257cdf0e10cSrcweir #	define  PTR_FD_SET(s)				((int *)&(s))
258cdf0e10cSrcweir #	define  PTHREAD_VALUE(t)			((t).field2)
259cdf0e10cSrcweir # 	define  PTHREAD_NONE_INIT			{ 0, -1 }
260cdf0e10cSrcweir #	define  PTHREAD_ATTR_DEFAULT		pthread_attr_default
261cdf0e10cSrcweir #	define  PTHREAD_MUTEXATTR_DEFAULT	pthread_mutexattr_default
262cdf0e10cSrcweir #	define  PTHREAD_CONDATTR_DEFAULT	pthread_condattr_default
263cdf0e10cSrcweir #	define  pthread_detach(t)			pthread_detach(&(t))
264cdf0e10cSrcweir #	define  NO_PTHREAD_PRIORITY
265cdf0e10cSrcweir #	define  NO_PTHREAD_SEMAPHORES
266cdf0e10cSrcweir #   define  NO_DL_FUNCTIONS
267cdf0e10cSrcweir #	undef	sigaction
268cdf0e10cSrcweir #	define  PTHREAD_SIGACTION 			cma_sigaction
269cdf0e10cSrcweir #endif
270cdf0e10cSrcweir 
271cdf0e10cSrcweir #ifdef SOLARIS
272cdf0e10cSrcweir #	include <shadow.h>
273cdf0e10cSrcweir #	include <sys/un.h>
274cdf0e10cSrcweir #	include <stropts.h>
275cdf0e10cSrcweir #	include <pthread.h>
276cdf0e10cSrcweir #	include <semaphore.h>
277cdf0e10cSrcweir #	include <netinet/tcp.h>
278cdf0e10cSrcweir #	include <sys/filio.h>
279cdf0e10cSrcweir #	include <dlfcn.h>
280cdf0e10cSrcweir #	include <sys/isa_defs.h>
281cdf0e10cSrcweir #	define 	IORESOURCE_TRANSFER_SYSV
282cdf0e10cSrcweir #	define 	IOCHANNEL_TRANSFER_BSD
283cdf0e10cSrcweir #	define  LIBPATH "LD_LIBRARY_PATH"
284eb232b7aSPedro Giffuni #	define  OLD_SHADOW_API
285cdf0e10cSrcweir #endif
286cdf0e10cSrcweir 
287cdf0e10cSrcweir #ifdef MACOSX
288cdf0e10cSrcweir #define __OPENTRANSPORTPROVIDERS__ // these are already defined
289cdf0e10cSrcweir #define TimeValue CFTimeValue      // Do not conflict with TimeValue in sal/inc/osl/time.h
290cdf0e10cSrcweir #include <Carbon/Carbon.h>
291cdf0e10cSrcweir #undef TimeValue
292cdf0e10cSrcweir #	ifndef ETIME
293cdf0e10cSrcweir #		define  ETIME ETIMEDOUT
294cdf0e10cSrcweir #	endif
295cdf0e10cSrcweir #	include <dlfcn.h>
296cdf0e10cSrcweir #	include <pthread.h>
297cdf0e10cSrcweir #	include <sys/file.h>
298cdf0e10cSrcweir #	include <sys/ioctl.h>
299cdf0e10cSrcweir #	include <sys/uio.h>
300cdf0e10cSrcweir #	include <sys/un.h>
301cdf0e10cSrcweir #	include <netinet/tcp.h>
302cdf0e10cSrcweir #	include <machine/endian.h>
303cdf0e10cSrcweir #	include <sys/time.h>
304cdf0e10cSrcweir #	include <sys/semaphore.h>
305cdf0e10cSrcweir /* fixme are premac and postmac still needed here? */
306cdf0e10cSrcweir #	include <premac.h>
307cdf0e10cSrcweir #	include <mach-o/dyld.h>
308cdf0e10cSrcweir #	include <postmac.h>
309cdf0e10cSrcweir #	if BYTE_ORDER == LITTLE_ENDIAN
310cdf0e10cSrcweir #		ifndef _LITTLE_ENDIAN
311cdf0e10cSrcweir #		define _LITTLE_ENDIAN
312cdf0e10cSrcweir #		endif
313cdf0e10cSrcweir #	elif BYTE_ORDER == BIG_ENDIAN
314cdf0e10cSrcweir #		ifndef _BIG_ENDIAN
315cdf0e10cSrcweir #		define _BIG_ENDIAN
316cdf0e10cSrcweir #		endif
317cdf0e10cSrcweir #	elif BYTE_ORDER == PDP_ENDIAN
318cdf0e10cSrcweir #		ifndef _PDP_ENDIAN
319cdf0e10cSrcweir #		define _PDP_ENDIAN
320cdf0e10cSrcweir #		endif
321cdf0e10cSrcweir #	endif
322cdf0e10cSrcweir #	define 	IOCHANNEL_TRANSFER_BSD_RENO
323cdf0e10cSrcweir #	define  NO_PTHREAD_RTL
324cdf0e10cSrcweir /* for NSGetArgc/Argv/Environ */
325cdf0e10cSrcweir #       include <crt_externs.h>
326cdf0e10cSrcweir #ifdef __cplusplus
327cdf0e10cSrcweir extern "C" {
328cdf0e10cSrcweir #endif
329cdf0e10cSrcweir int macxp_resolveAlias(char *path, int buflen);
330cdf0e10cSrcweir #ifdef __cplusplus
331cdf0e10cSrcweir }
332cdf0e10cSrcweir #endif
333cdf0e10cSrcweir #endif
334cdf0e10cSrcweir 
335cdf0e10cSrcweir #if !defined(_WIN32)  && !defined(_WIN16) && !defined(OS2)  && \
336cdf0e10cSrcweir     !defined(LINUX)   && !defined(NETBSD) && !defined(FREEBSD) && !defined(SCO)  && \
337cdf0e10cSrcweir 	!defined(AIX)     && !defined(HPUX)   && \
338cdf0e10cSrcweir 	!defined(SOLARIS) && !defined(MACOSX)
339cdf0e10cSrcweir #	error "Target platform not specified!"
340cdf0e10cSrcweir #endif
341cdf0e10cSrcweir 
342cdf0e10cSrcweir #if defined(NETBSD)
343cdf0e10cSrcweir #if defined _LITTLE_ENDIAN_OO
344cdf0e10cSrcweir #	define _OSL_BIGENDIAN
345cdf0e10cSrcweir #elif defined _BIG_ENDIAN_OO
346cdf0e10cSrcweir #	define _OSL_LITENDIAN
347cdf0e10cSrcweir #else
34886e1cf34SPedro Giffuni #	error undetermined endianness
349cdf0e10cSrcweir #endif
350cdf0e10cSrcweir #else
351cdf0e10cSrcweir #if defined _LITTLE_ENDIAN
352cdf0e10cSrcweir #	define _OSL_BIGENDIAN
353cdf0e10cSrcweir #elif defined _BIG_ENDIAN
354cdf0e10cSrcweir #	define _OSL_LITENDIAN
355cdf0e10cSrcweir #else
35686e1cf34SPedro Giffuni #	error undetermined endianness
357cdf0e10cSrcweir #endif
358cdf0e10cSrcweir #endif
359cdf0e10cSrcweir 
360cdf0e10cSrcweir #ifndef PTR_FD_SET
361cdf0e10cSrcweir #	define PTR_FD_SET(s)				(&(s))
362cdf0e10cSrcweir #endif
363cdf0e10cSrcweir 
364cdf0e10cSrcweir #ifndef NORMALIZE_TIMESPEC
365cdf0e10cSrcweir #	define NORMALIZE_TIMESPEC(timespec) \
366cdf0e10cSrcweir   		timespec . tv_sec  += timespec . tv_nsec / 1000000000; \
367cdf0e10cSrcweir   		timespec . tv_nsec %= 1000000000;
368cdf0e10cSrcweir #endif
369cdf0e10cSrcweir 
370cdf0e10cSrcweir #ifndef SET_TIMESPEC
371cdf0e10cSrcweir #	define SET_TIMESPEC(timespec, sec, nsec) \
372cdf0e10cSrcweir   		timespec . tv_sec  = (sec);  \
373cdf0e10cSrcweir   		timespec . tv_nsec = (nsec); \
374cdf0e10cSrcweir 		NORMALIZE_TIMESPEC(timespec);
375cdf0e10cSrcweir #endif
376cdf0e10cSrcweir 
377cdf0e10cSrcweir #ifndef SLEEP_TIMESPEC
378cdf0e10cSrcweir #	define SLEEP_TIMESPEC(timespec) nanosleep(&timespec, 0)
379cdf0e10cSrcweir #endif
380cdf0e10cSrcweir 
381cdf0e10cSrcweir #ifndef INIT_GROUPS
382cdf0e10cSrcweir #	define  INIT_GROUPS(name, gid)	((setgid((gid)) == 0) && (initgroups((name), (gid)) == 0))
383cdf0e10cSrcweir #endif
384cdf0e10cSrcweir 
385cdf0e10cSrcweir #ifndef PTHREAD_VALUE
386cdf0e10cSrcweir #	define PTHREAD_VALUE(t) 			(t)
387cdf0e10cSrcweir #endif
388cdf0e10cSrcweir #ifndef PTHREAD_NONE
389cdf0e10cSrcweir # if (__GNUC__ < 4) && !defined(MACOSX)
390cdf0e10cSrcweir extern pthread_t _pthread_none_;
391cdf0e10cSrcweir # endif
392cdf0e10cSrcweir #	define PTHREAD_NONE					_pthread_none_
393cdf0e10cSrcweir #   ifndef PTHREAD_NONE_INIT
394cdf0e10cSrcweir #		define PTHREAD_NONE_INIT		((pthread_t)-1)
395cdf0e10cSrcweir #	endif
396cdf0e10cSrcweir #endif
397cdf0e10cSrcweir 
398cdf0e10cSrcweir #ifndef PTHREAD_ATTR_DEFAULT
399cdf0e10cSrcweir #	define PTHREAD_ATTR_DEFAULT 		NULL
400cdf0e10cSrcweir #endif
401cdf0e10cSrcweir #ifndef PTHREAD_MUTEXATTR_DEFAULT
402cdf0e10cSrcweir #	define PTHREAD_MUTEXATTR_DEFAULT 	NULL
403cdf0e10cSrcweir #endif
404cdf0e10cSrcweir #ifndef PTHREAD_CONDATTR_DEFAULT
405cdf0e10cSrcweir #	define PTHREAD_CONDATTR_DEFAULT 	NULL
406cdf0e10cSrcweir #endif
407cdf0e10cSrcweir 
408cdf0e10cSrcweir #ifndef PTHREAD_SIGACTION
409cdf0e10cSrcweir #	define PTHREAD_SIGACTION sigaction
410cdf0e10cSrcweir #endif
411cdf0e10cSrcweir 
412cdf0e10cSrcweir #ifndef STAT_PARENT
413cdf0e10cSrcweir #	define STAT_PARENT					lstat
414cdf0e10cSrcweir #endif
415cdf0e10cSrcweir 
416cdf0e10cSrcweir /* socket options which might not be defined on all unx flavors */
417cdf0e10cSrcweir #ifndef SO_ACCEPTCONN
418cdf0e10cSrcweir #	define SO_ACCEPTCONN 	0
419cdf0e10cSrcweir #endif
420cdf0e10cSrcweir #ifndef SO_SNDLOWAT
421cdf0e10cSrcweir #	define SO_SNDLOWAT 		0
422cdf0e10cSrcweir #endif
423cdf0e10cSrcweir #ifndef SO_RCVLOWAT
424cdf0e10cSrcweir #	define SO_RCVLOWAT 		0
425cdf0e10cSrcweir #endif
426cdf0e10cSrcweir #ifndef SO_SNDTIMEO
427cdf0e10cSrcweir #	define	SO_SNDTIMEO 	0
428cdf0e10cSrcweir #endif
429cdf0e10cSrcweir #ifndef SO_RCVTIMEO
430cdf0e10cSrcweir #	define SO_RCVTIMEO 		0
431cdf0e10cSrcweir #endif
432cdf0e10cSrcweir #ifndef SO_USELOOPBACK
433cdf0e10cSrcweir #	define SO_USELOOPBACK 	0
434cdf0e10cSrcweir #endif
435cdf0e10cSrcweir #ifndef MSG_MAXIOVLEN
436cdf0e10cSrcweir #	define MSG_MAXIOVLEN 	0
437cdf0e10cSrcweir #endif
438cdf0e10cSrcweir 
439cdf0e10cSrcweir /* BEGIN HACK */
440cdf0e10cSrcweir /* dummy define and declarations for IPX should be replaced by */
441cdf0e10cSrcweir /* original ipx headers when these are available for this platform */
442cdf0e10cSrcweir 
443cdf0e10cSrcweir #ifndef SA_FAMILY_DECL
444cdf0e10cSrcweir #	define SA_FAMILY_DECL short sa_family
445cdf0e10cSrcweir #endif
446cdf0e10cSrcweir 
447cdf0e10cSrcweir typedef struct sockaddr_ipx {
448cdf0e10cSrcweir     SA_FAMILY_DECL;
449cdf0e10cSrcweir     char  sa_netnum[4];
450cdf0e10cSrcweir     char  sa_nodenum[6];
451cdf0e10cSrcweir     unsigned short sa_socket;
452cdf0e10cSrcweir } SOCKADDR_IPX;
453cdf0e10cSrcweir 
454cdf0e10cSrcweir #define NSPROTO_IPX      1000
455cdf0e10cSrcweir #define NSPROTO_SPX      1256
456cdf0e10cSrcweir #define NSPROTO_SPXII    1257
457cdf0e10cSrcweir 
458cdf0e10cSrcweir /* END HACK */
459cdf0e10cSrcweir 
460cdf0e10cSrcweir #ifdef NO_PTHREAD_SEMAPHORES
461cdf0e10cSrcweir 
462cdf0e10cSrcweir typedef struct
463cdf0e10cSrcweir {
464cdf0e10cSrcweir 	pthread_mutex_t	mutex;
465cdf0e10cSrcweir 	pthread_cond_t	increased;
466cdf0e10cSrcweir 	int			    value;
467cdf0e10cSrcweir } sem_t;
468cdf0e10cSrcweir extern int sem_init(sem_t* sem, int pshared, unsigned int value);
469cdf0e10cSrcweir extern int sem_destroy(sem_t* sem);
470cdf0e10cSrcweir extern int sem_wait(sem_t* sem);
471cdf0e10cSrcweir extern int sem_trywait(sem_t* sem);
472cdf0e10cSrcweir extern int sem_post(sem_t* sem);
473cdf0e10cSrcweir 
474cdf0e10cSrcweir #endif
475cdf0e10cSrcweir 
476cdf0e10cSrcweir #ifdef NO_PTHREAD_RTL
477cdf0e10cSrcweir #if !defined FREEBSD || (__FreeBSD_version < 500112)
478cdf0e10cSrcweir struct passwd *getpwent_r(struct passwd *pwd, char *buffer,  int buflen);
479cdf0e10cSrcweir extern struct spwd *getspnam_r(const char *name, struct spwd *result,
480cdf0e10cSrcweir 							   char *buffer, int buflen);
481cdf0e10cSrcweir 
482cdf0e10cSrcweir struct tm *localtime_r(const time_t *timep, struct tm *buffer);
483cdf0e10cSrcweir struct tm *gmtime_r(const time_t *timep, struct tm *buffer);
484cdf0e10cSrcweir #endif /* !defined FREEBSD || (__FreeBSD_version < 500112) */
485cdf0e10cSrcweir #if !defined(FREEBSD) || (__FreeBSD_version < 601103)
486cdf0e10cSrcweir struct hostent *gethostbyname_r(const char *name, struct hostent *result,
487cdf0e10cSrcweir 								char *buffer, int buflen, int *h_errnop);
488cdf0e10cSrcweir #endif /* !defined(FREEBSD) || (__FreeBSD_version < 601103) */
489cdf0e10cSrcweir #endif
490cdf0e10cSrcweir 
491cdf0e10cSrcweir #endif /* __OSL_SYSTEM_H__ */
492cdf0e10cSrcweir 
493