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