xref: /trunk/main/sal/osl/os2/system.h (revision cdf0e10c)
1*cdf0e10cSrcweir /*************************************************************************
2*cdf0e10cSrcweir  *
3*cdf0e10cSrcweir  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4*cdf0e10cSrcweir  *
5*cdf0e10cSrcweir  * Copyright 2000, 2010 Oracle and/or its affiliates.
6*cdf0e10cSrcweir  *
7*cdf0e10cSrcweir  * OpenOffice.org - a multi-platform office productivity suite
8*cdf0e10cSrcweir  *
9*cdf0e10cSrcweir  * This file is part of OpenOffice.org.
10*cdf0e10cSrcweir  *
11*cdf0e10cSrcweir  * OpenOffice.org is free software: you can redistribute it and/or modify
12*cdf0e10cSrcweir  * it under the terms of the GNU Lesser General Public License version 3
13*cdf0e10cSrcweir  * only, as published by the Free Software Foundation.
14*cdf0e10cSrcweir  *
15*cdf0e10cSrcweir  * OpenOffice.org is distributed in the hope that it will be useful,
16*cdf0e10cSrcweir  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17*cdf0e10cSrcweir  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18*cdf0e10cSrcweir  * GNU Lesser General Public License version 3 for more details
19*cdf0e10cSrcweir  * (a copy is included in the LICENSE file that accompanied this code).
20*cdf0e10cSrcweir  *
21*cdf0e10cSrcweir  * You should have received a copy of the GNU Lesser General Public License
22*cdf0e10cSrcweir  * version 3 along with OpenOffice.org.  If not, see
23*cdf0e10cSrcweir  * <http://www.openoffice.org/license.html>
24*cdf0e10cSrcweir  * for a copy of the LGPLv3 License.
25*cdf0e10cSrcweir  *
26*cdf0e10cSrcweir  ************************************************************************/
27*cdf0e10cSrcweir 
28*cdf0e10cSrcweir #ifndef __OSL_SYSTEM_H__
29*cdf0e10cSrcweir #define __OSL_SYSTEM_H__
30*cdf0e10cSrcweir 
31*cdf0e10cSrcweir #define PTHREAD_NONE
32*cdf0e10cSrcweir 
33*cdf0e10cSrcweir #include <stdio.h>
34*cdf0e10cSrcweir #include <stdlib.h>
35*cdf0e10cSrcweir #include <limits.h>
36*cdf0e10cSrcweir #include <string.h>
37*cdf0e10cSrcweir #include <errno.h>
38*cdf0e10cSrcweir #include <stdarg.h>
39*cdf0e10cSrcweir 
40*cdf0e10cSrcweir #include <unistd.h>
41*cdf0e10cSrcweir #include <fcntl.h>
42*cdf0e10cSrcweir #include <dirent.h>
43*cdf0e10cSrcweir #include <signal.h>
44*cdf0e10cSrcweir #include <utime.h>
45*cdf0e10cSrcweir 
46*cdf0e10cSrcweir #include <pwd.h>
47*cdf0e10cSrcweir 
48*cdf0e10cSrcweir #include <netdb.h>
49*cdf0e10cSrcweir 
50*cdf0e10cSrcweir #include <sys/stat.h>
51*cdf0e10cSrcweir #include <sys/wait.h>
52*cdf0e10cSrcweir 
53*cdf0e10cSrcweir #include <sys/types.h>
54*cdf0e10cSrcweir 
55*cdf0e10cSrcweir /* OS/2 API header */
56*cdf0e10cSrcweir #define INCL_WINPROGRAMLIST
57*cdf0e10cSrcweir #define INCL_WINSHELLDATA
58*cdf0e10cSrcweir #define INCL_BASE
59*cdf0e10cSrcweir #define INCL_DOSSIGNALS
60*cdf0e10cSrcweir #define INCL_DOSSEMAPHORES
61*cdf0e10cSrcweir #define INCL_DOSMODULEMGR
62*cdf0e10cSrcweir #define INCL_DOSERRORS
63*cdf0e10cSrcweir #define INCL_DOSSESMGR
64*cdf0e10cSrcweir #define INCL_DOSPROCESS
65*cdf0e10cSrcweir #define INCL_DOSNMPIPES
66*cdf0e10cSrcweir #define INCL_DOSMISC
67*cdf0e10cSrcweir #include <os2.h>
68*cdf0e10cSrcweir 
69*cdf0e10cSrcweir typedef ULONG HANDLE;
70*cdf0e10cSrcweir #define _MAX_ENV		2048
71*cdf0e10cSrcweir #define _MAX_CMD		2048
72*cdf0e10cSrcweir 
73*cdf0e10cSrcweir #ifdef __cplusplus
74*cdf0e10cSrcweir extern "C"
75*cdf0e10cSrcweir #endif
76*cdf0e10cSrcweir int debug_printf(const char *f, ...);
77*cdf0e10cSrcweir 
78*cdf0e10cSrcweir /* Make sockets of type AF_UNIX use underlying FS rights */
79*cdf0e10cSrcweir #ifdef SOLARIS
80*cdf0e10cSrcweir #	define _XOPEN_SOURCE 500
81*cdf0e10cSrcweir #	include <sys/socket.h>
82*cdf0e10cSrcweir #	undef _XOPEN_SOURCE
83*cdf0e10cSrcweir #else
84*cdf0e10cSrcweir #	include <sys/socket.h>
85*cdf0e10cSrcweir #endif
86*cdf0e10cSrcweir 
87*cdf0e10cSrcweir #include <netinet/in.h>
88*cdf0e10cSrcweir #include <arpa/inet.h>
89*cdf0e10cSrcweir 
90*cdf0e10cSrcweir #define max(a, b)	((a) < (b) ? (b) : (a))
91*cdf0e10cSrcweir #define min(a, b)	((a) > (b) ? (b) : (a))
92*cdf0e10cSrcweir #ifndef abs
93*cdf0e10cSrcweir #define abs(x)		((x) >= 0 ? (x) : -(x))
94*cdf0e10cSrcweir #endif
95*cdf0e10cSrcweir 
96*cdf0e10cSrcweir #ifdef SYSV
97*cdf0e10cSrcweir #   include <sys/utsname.h>
98*cdf0e10cSrcweir #endif
99*cdf0e10cSrcweir 
100*cdf0e10cSrcweir #ifdef LINUX
101*cdf0e10cSrcweir #   ifndef __USE_GNU
102*cdf0e10cSrcweir #   define __USE_GNU
103*cdf0e10cSrcweir #   endif
104*cdf0e10cSrcweir 
105*cdf0e10cSrcweir #if GLIBC >= 2
106*cdf0e10cSrcweir #   include <shadow.h>
107*cdf0e10cSrcweir #   if ! (defined(SPARC) || defined(X86_64))
108*cdf0e10cSrcweir #       include <asm/sigcontext.h>
109*cdf0e10cSrcweir #   endif
110*cdf0e10cSrcweir #   include <pthread.h>
111*cdf0e10cSrcweir #   include <sys/file.h>
112*cdf0e10cSrcweir #   include <sys/ioctl.h>
113*cdf0e10cSrcweir #	include <sys/uio.h>
114*cdf0e10cSrcweir #	include <sys/un.h>
115*cdf0e10cSrcweir #   include <netinet/tcp.h>
116*cdf0e10cSrcweir #   include <dlfcn.h>
117*cdf0e10cSrcweir #	include <endian.h>
118*cdf0e10cSrcweir #	include <sys/time.h>
119*cdf0e10cSrcweir #	include <semaphore.h>
120*cdf0e10cSrcweir #	if __BYTE_ORDER == __LITTLE_ENDIAN
121*cdf0e10cSrcweir #		define _LITTLE_ENDIAN
122*cdf0e10cSrcweir #	elif __BYTE_ORDER == __BIG_ENDIAN
123*cdf0e10cSrcweir #		define _BIG_ENDIAN
124*cdf0e10cSrcweir #	elif __BYTE_ORDER == __PDP_ENDIAN
125*cdf0e10cSrcweir #		define _PDP_ENDIAN
126*cdf0e10cSrcweir #	endif
127*cdf0e10cSrcweir #	define  PTR_SIZE_T(s)				((size_t *)&(s))
128*cdf0e10cSrcweir #	define 	IORESOURCE_TRANSFER_BSD
129*cdf0e10cSrcweir #	define 	IOCHANNEL_TRANSFER_BSD_RENO
130*cdf0e10cSrcweir #	define	pthread_testcancel()
131*cdf0e10cSrcweir #	define  NO_PTHREAD_PRIORITY
132*cdf0e10cSrcweir #	define  PTHREAD_SIGACTION 			pthread_sigaction
133*cdf0e10cSrcweir #else
134*cdf0e10cSrcweir #   include <shadow.h>
135*cdf0e10cSrcweir #   include <asm/sigcontext.h>
136*cdf0e10cSrcweir #   include <pthread.h>
137*cdf0e10cSrcweir #   include <sys/file.h>
138*cdf0e10cSrcweir #   include <sys/ioctl.h>
139*cdf0e10cSrcweir #   include <linux/net.h>
140*cdf0e10cSrcweir #	include <sys/un.h>
141*cdf0e10cSrcweir #   include <netinet/tcp.h>
142*cdf0e10cSrcweir #   include <linux/elfcore.h>
143*cdf0e10cSrcweir #   include <dlfcn.h>
144*cdf0e10cSrcweir #	include <endian.h>
145*cdf0e10cSrcweir #	if __BYTE_ORDER == __LITTLE_ENDIAN
146*cdf0e10cSrcweir #		define _LITTLE_ENDIAN
147*cdf0e10cSrcweir #	elif __BYTE_ORDER == __BIG_ENDIAN
148*cdf0e10cSrcweir #		define _BIG_ENDIAN
149*cdf0e10cSrcweir #	elif __BYTE_ORDER == __PDP_ENDIAN
150*cdf0e10cSrcweir #		define _PDP_ENDIAN
151*cdf0e10cSrcweir #	endif
152*cdf0e10cSrcweir #	define 	IORESOURCE_TRANSFER_BSD
153*cdf0e10cSrcweir #	define 	IOCHANNEL_TRANSFER_BSD_RENO
154*cdf0e10cSrcweir #	define	pthread_testcancel()
155*cdf0e10cSrcweir #	define  NO_PTHREAD_RTL
156*cdf0e10cSrcweir #	define  NO_PTHREAD_PRIORITY
157*cdf0e10cSrcweir #	define  PTHREAD_SIGACTION 			pthread_sigaction
158*cdf0e10cSrcweir #endif
159*cdf0e10cSrcweir #endif
160*cdf0e10cSrcweir 
161*cdf0e10cSrcweir #ifdef NETBSD
162*cdf0e10cSrcweir #	define  ETIME ETIMEDOUT
163*cdf0e10cSrcweir #	define _POSIX_THREAD_SYSCALL_SOFT 1
164*cdf0e10cSrcweir #	include <pthread.h>
165*cdf0e10cSrcweir #	include <netdb.h>
166*cdf0e10cSrcweir #	include <sys/sem.h>
167*cdf0e10cSrcweir #	include <sys/exec.h>
168*cdf0e10cSrcweir #	include <sys/filio.h>
169*cdf0e10cSrcweir #	include <sys/ioctl.h>
170*cdf0e10cSrcweir #	include <sys/time.h>
171*cdf0e10cSrcweir #	include <sys/un.h>
172*cdf0e10cSrcweir #	include <netinet/tcp.h>
173*cdf0e10cSrcweir #	include <dlfcn.h>
174*cdf0e10cSrcweir #   include <machine/endian.h>
175*cdf0e10cSrcweir #   if BYTE_ORDER == LITTLE_ENDIAN
176*cdf0e10cSrcweir #   	define _LITTLE_ENDIAN_OO
177*cdf0e10cSrcweir #   elif BYTE_ORDER == BIG_ENDIAN
178*cdf0e10cSrcweir #   	define _BIG_ENDIAN_OO
179*cdf0e10cSrcweir #   elif BYTE_ORDER == PDP_ENDIAN
180*cdf0e10cSrcweir #   	define _PDP_ENDIAN_OO
181*cdf0e10cSrcweir #   endif
182*cdf0e10cSrcweir #	define  PTR_SIZE_T(s)				((size_t *)&(s))
183*cdf0e10cSrcweir #	define 	IORESOURCE_TRANSFER_BSD
184*cdf0e10cSrcweir #	define 	IOCHANNEL_TRANSFER_BSD_RENO
185*cdf0e10cSrcweir #	define	pthread_testcancel()
186*cdf0e10cSrcweir #	define  NO_PTHREAD_PRIORITY
187*cdf0e10cSrcweir #     define  NO_PTHREAD_SEMAPHORES
188*cdf0e10cSrcweir #	define  NO_PTHREAD_RTL
189*cdf0e10cSrcweir #	define  PTHREAD_SIGACTION 			pthread_sigaction
190*cdf0e10cSrcweir #endif
191*cdf0e10cSrcweir 
192*cdf0e10cSrcweir #ifdef FREEBSD
193*cdf0e10cSrcweir #   define  ETIME ETIMEDOUT
194*cdf0e10cSrcweir #   include <pthread.h>
195*cdf0e10cSrcweir #   include <sys/sem.h>
196*cdf0e10cSrcweir #   include <semaphore.h>
197*cdf0e10cSrcweir #   include <dlfcn.h>
198*cdf0e10cSrcweir #   include <sys/filio.h>
199*cdf0e10cSrcweir #   include <sys/ioctl.h>
200*cdf0e10cSrcweir #   include <sys/param.h>
201*cdf0e10cSrcweir #   include <sys/time.h>
202*cdf0e10cSrcweir #   include <sys/uio.h>
203*cdf0e10cSrcweir #   include <sys/exec.h>
204*cdf0e10cSrcweir #   include <vm/vm.h>
205*cdf0e10cSrcweir #   include <vm/vm_param.h>
206*cdf0e10cSrcweir #   include <vm/pmap.h>
207*cdf0e10cSrcweir #   include <vm/swap_pager.h>
208*cdf0e10cSrcweir #	include <sys/un.h>
209*cdf0e10cSrcweir #   include <netinet/tcp.h>
210*cdf0e10cSrcweir #	define 	IORESOURCE_TRANSFER_BSD
211*cdf0e10cSrcweir #   include <machine/endian.h>
212*cdf0e10cSrcweir #if __FreeBSD_version < 500000
213*cdf0e10cSrcweir #   if BYTE_ORDER == LITTLE_ENDIAN
214*cdf0e10cSrcweir #   	define _LITTLE_ENDIAN
215*cdf0e10cSrcweir #   elif BYTE_ORDER == BIG_ENDIAN
216*cdf0e10cSrcweir #   	define _BIG_ENDIAN
217*cdf0e10cSrcweir #   elif BYTE_ORDER == PDP_ENDIAN
218*cdf0e10cSrcweir #   	define _PDP_ENDIAN
219*cdf0e10cSrcweir #   endif
220*cdf0e10cSrcweir #endif
221*cdf0e10cSrcweir #	define  NO_PTHREAD_RTL
222*cdf0e10cSrcweir #endif
223*cdf0e10cSrcweir 
224*cdf0e10cSrcweir #ifdef SCO
225*cdf0e10cSrcweir #   define AF_IPX -1
226*cdf0e10cSrcweir #	include <strings.h>
227*cdf0e10cSrcweir #	include <pthread.h>
228*cdf0e10cSrcweir #	include <shadow.h>
229*cdf0e10cSrcweir #	include <netdb.h>
230*cdf0e10cSrcweir #	include <sys/un.h>
231*cdf0e10cSrcweir #	include <sys/netinet/tcp.h>
232*cdf0e10cSrcweir #   include <sys/types.h>
233*cdf0e10cSrcweir #   include <sys/byteorder.h>
234*cdf0e10cSrcweir #   include <dlfcn.h>
235*cdf0e10cSrcweir #   if BYTE_ORDER == LITTLE_ENDIAN
236*cdf0e10cSrcweir #   	define _LITTLE_ENDIAN
237*cdf0e10cSrcweir #   elif BYTE_ORDER == BIG_ENDIAN
238*cdf0e10cSrcweir #   	define _BIG_ENDIAN
239*cdf0e10cSrcweir #   elif BYTE_ORDER == PDP_ENDIAN
240*cdf0e10cSrcweir #   	define _PDP_ENDIAN
241*cdf0e10cSrcweir #   endif
242*cdf0e10cSrcweir #	define  sched_yield() 				pthread_yield()
243*cdf0e10cSrcweir #	define	pthread_testcancel()
244*cdf0e10cSrcweir #	define  NO_PTHREAD_RTL
245*cdf0e10cSrcweir #	define  NO_PTHREAD_PRIORITY
246*cdf0e10cSrcweir extern int pthread_cancel(pthread_t);
247*cdf0e10cSrcweir extern unsigned int nanosleep(unsigned int);
248*cdf0e10cSrcweir #	define  SLEEP_TIMESPEC(timespec)  	(timespec .tv_sec > 0) ? sleep(timespec .tv_sec), nanosleep(timespec .tv_nsec) : nanosleep(timespec .tv_nsec)
249*cdf0e10cSrcweir #	define  PATH_MAX 					_POSIX_PATH_MAX
250*cdf0e10cSrcweir #	define	S_ISSOCK					S_ISFIFO
251*cdf0e10cSrcweir #	define	PTHREAD_SIGACTION 			pthread_sigaction
252*cdf0e10cSrcweir #	define	STAT_PARENT					stat
253*cdf0e10cSrcweir #endif
254*cdf0e10cSrcweir 
255*cdf0e10cSrcweir #ifdef AIX
256*cdf0e10cSrcweir #   define AF_IPX -1
257*cdf0e10cSrcweir #	include <strings.h>
258*cdf0e10cSrcweir #	include <pthread.h>
259*cdf0e10cSrcweir #	include <sys/time.h>
260*cdf0e10cSrcweir #	include <sys/un.h>
261*cdf0e10cSrcweir #	include <netinet/tcp.h>
262*cdf0e10cSrcweir #	include <sys/machine.h>
263*cdf0e10cSrcweir #   if BYTE_ORDER == LITTLE_ENDIAN
264*cdf0e10cSrcweir #   	define _LITTLE_ENDIAN
265*cdf0e10cSrcweir #   elif BYTE_ORDER == BIG_ENDIAN
266*cdf0e10cSrcweir #   	define _BIG_ENDIAN
267*cdf0e10cSrcweir #   elif BYTE_ORDER == PDP_ENDIAN
268*cdf0e10cSrcweir #   	define _PDP_ENDIAN
269*cdf0e10cSrcweir #   endif
270*cdf0e10cSrcweir #	define  sched_yield() 				pthread_yield()
271*cdf0e10cSrcweir #	define  SLEEP_TIMESPEC(timespec)  	nsleep(&timespec, 0)
272*cdf0e10cSrcweir #	define  LIBPATH "LIBPATH"
273*cdf0e10cSrcweir #	define  PTR_SIZE_T(s)				((size_t *)&(s))
274*cdf0e10cSrcweir #	define  NO_PTHREAD_SEMAPHORES
275*cdf0e10cSrcweir #   define  NO_DL_FUNCTIONS
276*cdf0e10cSrcweir #endif
277*cdf0e10cSrcweir 
278*cdf0e10cSrcweir #ifdef HPUX
279*cdf0e10cSrcweir #   define  AF_IPX -1
280*cdf0e10cSrcweir #   undef	howmany
281*cdf0e10cSrcweir #   undef	MAXINT
282*cdf0e10cSrcweir #	include <pthread.h>
283*cdf0e10cSrcweir #	include <sys/un.h>
284*cdf0e10cSrcweir #	include <sys/sched.h>
285*cdf0e10cSrcweir #	include <sys/xti.h>
286*cdf0e10cSrcweir #	include <sys/pstat.h>
287*cdf0e10cSrcweir #	include <shadow.h>
288*cdf0e10cSrcweir #	include <crypt.h>
289*cdf0e10cSrcweir #	include <machine/param.h>
290*cdf0e10cSrcweir #	define  LIBPATH "SHLIB_PATH"
291*cdf0e10cSrcweir #	define  PTR_SIZE_T(s)				((int *)&(s))
292*cdf0e10cSrcweir #	define  PTR_FD_SET(s)				((int *)&(s))
293*cdf0e10cSrcweir #	define  PTHREAD_VALUE(t)			((t).field2)
294*cdf0e10cSrcweir # 	define  PTHREAD_NONE_INIT			{ 0, -1 }
295*cdf0e10cSrcweir #	define  PTHREAD_ATTR_DEFAULT		pthread_attr_default
296*cdf0e10cSrcweir #	define  PTHREAD_MUTEXATTR_DEFAULT	pthread_mutexattr_default
297*cdf0e10cSrcweir #	define  PTHREAD_CONDATTR_DEFAULT	pthread_condattr_default
298*cdf0e10cSrcweir #	define  pthread_detach(t)			pthread_detach(&(t))
299*cdf0e10cSrcweir #	define  NO_PTHREAD_PRIORITY
300*cdf0e10cSrcweir #	define  NO_PTHREAD_SEMAPHORES
301*cdf0e10cSrcweir #   define  NO_DL_FUNCTIONS
302*cdf0e10cSrcweir #	undef	sigaction
303*cdf0e10cSrcweir #	define  PTHREAD_SIGACTION 			cma_sigaction
304*cdf0e10cSrcweir #endif
305*cdf0e10cSrcweir 
306*cdf0e10cSrcweir #ifdef SOLARIS
307*cdf0e10cSrcweir #	include <shadow.h>
308*cdf0e10cSrcweir #	include <sys/procfs.h>
309*cdf0e10cSrcweir #	include <sys/un.h>
310*cdf0e10cSrcweir #	include <stropts.h>
311*cdf0e10cSrcweir #	include <pthread.h>
312*cdf0e10cSrcweir #	include <semaphore.h>
313*cdf0e10cSrcweir #	include <netinet/tcp.h>
314*cdf0e10cSrcweir #	include <sys/filio.h>
315*cdf0e10cSrcweir #	include <dlfcn.h>
316*cdf0e10cSrcweir #	include <sys/isa_defs.h>
317*cdf0e10cSrcweir #	define 	IORESOURCE_TRANSFER_SYSV
318*cdf0e10cSrcweir #	define 	IOCHANNEL_TRANSFER_BSD
319*cdf0e10cSrcweir #	define  LIBPATH "LD_LIBRARY_PATH"
320*cdf0e10cSrcweir #	define  PTR_SIZE_T(s)				((int *)&(s))
321*cdf0e10cSrcweir #endif
322*cdf0e10cSrcweir 
323*cdf0e10cSrcweir #ifdef MACOSX
324*cdf0e10cSrcweir #	define  ETIME ETIMEDOUT
325*cdf0e10cSrcweir #	include <pthread.h>
326*cdf0e10cSrcweir #	include <sys/file.h>
327*cdf0e10cSrcweir #	include <sys/ioctl.h>
328*cdf0e10cSrcweir #	include <sys/uio.h>
329*cdf0e10cSrcweir #	include <sys/un.h>
330*cdf0e10cSrcweir #	include <netinet/tcp.h>
331*cdf0e10cSrcweir #	include <machine/endian.h>
332*cdf0e10cSrcweir #	include <sys/time.h>
333*cdf0e10cSrcweir #	include <sys/semaphore.h>
334*cdf0e10cSrcweir /* fixme are premac and postmac still needed here? */
335*cdf0e10cSrcweir #	include <premac.h>
336*cdf0e10cSrcweir #	include <mach-o/dyld.h>
337*cdf0e10cSrcweir #	include <postmac.h>
338*cdf0e10cSrcweir #	if BYTE_ORDER == LITTLE_ENDIAN
339*cdf0e10cSrcweir #		define _LITTLE_ENDIAN
340*cdf0e10cSrcweir #	elif BYTE_ORDER == BIG_ENDIAN
341*cdf0e10cSrcweir #		define _BIG_ENDIAN
342*cdf0e10cSrcweir #	elif BYTE_ORDER == PDP_ENDIAN
343*cdf0e10cSrcweir #		define _PDP_ENDIAN
344*cdf0e10cSrcweir #	endif
345*cdf0e10cSrcweir #	define 	IOCHANNEL_TRANSFER_BSD_RENO
346*cdf0e10cSrcweir #	define  NO_PTHREAD_RTL
347*cdf0e10cSrcweir /* for NSGetArgc/Argv/Environ */
348*cdf0e10cSrcweir #       include <crt_externs.h>
349*cdf0e10cSrcweir char *macxp_tempnam( const char *tmpdir, const char *prefix );
350*cdf0e10cSrcweir #endif
351*cdf0e10cSrcweir 
352*cdf0e10cSrcweir #ifdef OS2
353*cdf0e10cSrcweir #	include <netinet/tcp.h>
354*cdf0e10cSrcweir #endif
355*cdf0e10cSrcweir 
356*cdf0e10cSrcweir #if !defined(_WIN32)  && !defined(_WIN16) && !defined(OS2)  && \
357*cdf0e10cSrcweir     !defined(LINUX)   && !defined(NETBSD) && !defined(FREEBSD) && !defined(SCO)  && \
358*cdf0e10cSrcweir 	!defined(AIX)     && !defined(HPUX)   && \
359*cdf0e10cSrcweir 	!defined(SOLARIS) && !defined(MACOSX)
360*cdf0e10cSrcweir #	error "Target plattform not specified !"
361*cdf0e10cSrcweir #endif
362*cdf0e10cSrcweir 
363*cdf0e10cSrcweir #if defined(NETBSD)
364*cdf0e10cSrcweir #if defined _LITTLE_ENDIAN_OO
365*cdf0e10cSrcweir #	define _OSL_BIGENDIAN
366*cdf0e10cSrcweir #elif defined _BIG_ENDIAN_OO
367*cdf0e10cSrcweir #	define _OSL_LITENDIAN
368*cdf0e10cSrcweir #else
369*cdf0e10cSrcweir #	error undetermined endianess
370*cdf0e10cSrcweir #endif
371*cdf0e10cSrcweir #else
372*cdf0e10cSrcweir #if defined _LITTLE_ENDIAN
373*cdf0e10cSrcweir #	define _OSL_BIGENDIAN
374*cdf0e10cSrcweir #elif defined _BIG_ENDIAN
375*cdf0e10cSrcweir #	define _OSL_LITENDIAN
376*cdf0e10cSrcweir #else
377*cdf0e10cSrcweir #	error undetermined endianess
378*cdf0e10cSrcweir #endif
379*cdf0e10cSrcweir #endif
380*cdf0e10cSrcweir 
381*cdf0e10cSrcweir #ifndef PTR_SIZE_T
382*cdf0e10cSrcweir #	define PTR_SIZE_T(s)				(&(s))
383*cdf0e10cSrcweir #endif
384*cdf0e10cSrcweir 
385*cdf0e10cSrcweir #ifndef PTR_FD_SET
386*cdf0e10cSrcweir #	define PTR_FD_SET(s)				(&(s))
387*cdf0e10cSrcweir #endif
388*cdf0e10cSrcweir 
389*cdf0e10cSrcweir #ifndef NORMALIZE_TIMESPEC
390*cdf0e10cSrcweir #	define NORMALIZE_TIMESPEC(timespec) \
391*cdf0e10cSrcweir   		timespec . tv_sec  += timespec . tv_nsec / 1000000000; \
392*cdf0e10cSrcweir   		timespec . tv_nsec %= 1000000000;
393*cdf0e10cSrcweir #endif
394*cdf0e10cSrcweir 
395*cdf0e10cSrcweir #ifndef SET_TIMESPEC
396*cdf0e10cSrcweir #	define SET_TIMESPEC(timespec, sec, nsec) \
397*cdf0e10cSrcweir   		timespec . tv_sec  = (sec);  \
398*cdf0e10cSrcweir   		timespec . tv_nsec = (nsec); \
399*cdf0e10cSrcweir 		NORMALIZE_TIMESPEC(timespec);
400*cdf0e10cSrcweir #endif
401*cdf0e10cSrcweir 
402*cdf0e10cSrcweir #ifndef SLEEP_TIMESPEC
403*cdf0e10cSrcweir #	define SLEEP_TIMESPEC(timespec) nanosleep(&timespec, 0)
404*cdf0e10cSrcweir #endif
405*cdf0e10cSrcweir 
406*cdf0e10cSrcweir #ifndef INIT_GROUPS
407*cdf0e10cSrcweir #	define  INIT_GROUPS(name, gid)	((setgid((gid)) == 0) && (initgroups((name), (gid)) == 0))
408*cdf0e10cSrcweir #endif
409*cdf0e10cSrcweir 
410*cdf0e10cSrcweir #ifndef PTHREAD_VALUE
411*cdf0e10cSrcweir #	define PTHREAD_VALUE(t) 			(t)
412*cdf0e10cSrcweir #endif
413*cdf0e10cSrcweir #ifndef PTHREAD_NONE
414*cdf0e10cSrcweir extern pthread_t _pthread_none_;
415*cdf0e10cSrcweir #	define PTHREAD_NONE					_pthread_none_
416*cdf0e10cSrcweir #   ifndef PTHREAD_NONE_INIT
417*cdf0e10cSrcweir #		define PTHREAD_NONE_INIT		((pthread_t)-1)
418*cdf0e10cSrcweir #	endif
419*cdf0e10cSrcweir #endif
420*cdf0e10cSrcweir 
421*cdf0e10cSrcweir #ifndef PTHREAD_ATTR_DEFAULT
422*cdf0e10cSrcweir #	define PTHREAD_ATTR_DEFAULT 		NULL
423*cdf0e10cSrcweir #endif
424*cdf0e10cSrcweir #ifndef PTHREAD_MUTEXATTR_DEFAULT
425*cdf0e10cSrcweir #	define PTHREAD_MUTEXATTR_DEFAULT 	NULL
426*cdf0e10cSrcweir #endif
427*cdf0e10cSrcweir #ifndef PTHREAD_CONDATTR_DEFAULT
428*cdf0e10cSrcweir #	define PTHREAD_CONDATTR_DEFAULT 	NULL
429*cdf0e10cSrcweir #endif
430*cdf0e10cSrcweir 
431*cdf0e10cSrcweir #ifndef PTHREAD_SIGACTION
432*cdf0e10cSrcweir #	define PTHREAD_SIGACTION sigaction
433*cdf0e10cSrcweir #endif
434*cdf0e10cSrcweir 
435*cdf0e10cSrcweir #ifndef STAT_PARENT
436*cdf0e10cSrcweir #	define STAT_PARENT					lstat
437*cdf0e10cSrcweir #endif
438*cdf0e10cSrcweir 
439*cdf0e10cSrcweir /* socket options which might not be defined on all unx flavors */
440*cdf0e10cSrcweir #ifndef SO_ACCEPTCONN
441*cdf0e10cSrcweir #	define SO_ACCEPTCONN 	0
442*cdf0e10cSrcweir #endif
443*cdf0e10cSrcweir #ifndef SO_SNDLOWAT
444*cdf0e10cSrcweir #	define SO_SNDLOWAT 		0
445*cdf0e10cSrcweir #endif
446*cdf0e10cSrcweir #ifndef SO_RCVLOWAT
447*cdf0e10cSrcweir #	define SO_RCVLOWAT 		0
448*cdf0e10cSrcweir #endif
449*cdf0e10cSrcweir #ifndef SO_SNDTIMEO
450*cdf0e10cSrcweir #	define	SO_SNDTIMEO 	0
451*cdf0e10cSrcweir #endif
452*cdf0e10cSrcweir #ifndef SO_RCVTIMEO
453*cdf0e10cSrcweir #	define SO_RCVTIMEO 		0
454*cdf0e10cSrcweir #endif
455*cdf0e10cSrcweir #ifndef SO_USELOOPBACK
456*cdf0e10cSrcweir #	define SO_USELOOPBACK 	0
457*cdf0e10cSrcweir #endif
458*cdf0e10cSrcweir #ifndef MSG_MAXIOVLEN
459*cdf0e10cSrcweir #	define MSG_MAXIOVLEN 	0
460*cdf0e10cSrcweir #endif
461*cdf0e10cSrcweir 
462*cdf0e10cSrcweir /* BEGIN HACK */
463*cdf0e10cSrcweir /* dummy define and declarations for IPX should be replaced by */
464*cdf0e10cSrcweir /* original ipx headers when these are available for this platform */
465*cdf0e10cSrcweir 
466*cdf0e10cSrcweir #ifndef SA_FAMILY_DECL
467*cdf0e10cSrcweir #	define SA_FAMILY_DECL short sa_family
468*cdf0e10cSrcweir #endif
469*cdf0e10cSrcweir 
470*cdf0e10cSrcweir typedef struct sockaddr_ipx {
471*cdf0e10cSrcweir     SA_FAMILY_DECL;
472*cdf0e10cSrcweir     char  sa_netnum[4];
473*cdf0e10cSrcweir     char  sa_nodenum[6];
474*cdf0e10cSrcweir     unsigned short sa_socket;
475*cdf0e10cSrcweir } SOCKADDR_IPX;
476*cdf0e10cSrcweir 
477*cdf0e10cSrcweir #define NSPROTO_IPX      1000
478*cdf0e10cSrcweir #define NSPROTO_SPX      1256
479*cdf0e10cSrcweir #define NSPROTO_SPXII    1257
480*cdf0e10cSrcweir 
481*cdf0e10cSrcweir /* END HACK */
482*cdf0e10cSrcweir 
483*cdf0e10cSrcweir #ifdef NO_PTHREAD_SEMAPHORES
484*cdf0e10cSrcweir 
485*cdf0e10cSrcweir typedef struct
486*cdf0e10cSrcweir {
487*cdf0e10cSrcweir 	pthread_mutex_t	mutex;
488*cdf0e10cSrcweir 	pthread_cond_t	increased;
489*cdf0e10cSrcweir 	int			    value;
490*cdf0e10cSrcweir } sem_t;
491*cdf0e10cSrcweir extern int sem_init(sem_t* sem, int pshared, unsigned int value);
492*cdf0e10cSrcweir extern int sem_destroy(sem_t* sem);
493*cdf0e10cSrcweir extern int sem_wait(sem_t* sem);
494*cdf0e10cSrcweir extern int sem_trywait(sem_t* sem);
495*cdf0e10cSrcweir extern int sem_post(sem_t* sem);
496*cdf0e10cSrcweir 
497*cdf0e10cSrcweir #endif
498*cdf0e10cSrcweir 
499*cdf0e10cSrcweir #ifdef NO_PTHREAD_RTL
500*cdf0e10cSrcweir #if !defined FREEBSD || (__FreeBSD_version < 500112)
501*cdf0e10cSrcweir struct passwd *getpwent_r(struct passwd *pwd, char *buffer,  int buflen);
502*cdf0e10cSrcweir extern struct spwd *getspnam_r(const char *name, struct spwd *result,
503*cdf0e10cSrcweir 							   char *buffer, int buflen);
504*cdf0e10cSrcweir 
505*cdf0e10cSrcweir struct tm *localtime_r(const time_t *timep, struct tm *buffer);
506*cdf0e10cSrcweir struct tm *gmtime_r(const time_t *timep, struct tm *buffer);
507*cdf0e10cSrcweir #endif /* !defined FREEBSD || (__FreeBSD_version < 500112) */
508*cdf0e10cSrcweir struct hostent *gethostbyname_r(const char *name, struct hostent *result,
509*cdf0e10cSrcweir 								char *buffer, int buflen, int *h_errnop);
510*cdf0e10cSrcweir #endif
511*cdf0e10cSrcweir 
512*cdf0e10cSrcweir #endif /* __OSL_SYSTEM_H__ */
513*cdf0e10cSrcweir 
514