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(×pec, 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) 356cdf0e10cSrcweir # error "Target plattform 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 365*86e1cf34SPedro 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 373*86e1cf34SPedro 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(×pec, 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