1e18a033bSKonstantin Ananyev
2e18a033bSKonstantin Ananyev/*
3e18a033bSKonstantin Ananyev * Copyright (C) Igor Sysoev
4e18a033bSKonstantin Ananyev * Copyright (C) Nginx, Inc.
5e18a033bSKonstantin Ananyev */
6e18a033bSKonstantin Ananyev
7e18a033bSKonstantin Ananyev
8e18a033bSKonstantin Ananyev#ifndef _NGX_POSIX_CONFIG_H_INCLUDED_
9e18a033bSKonstantin Ananyev#define _NGX_POSIX_CONFIG_H_INCLUDED_
10e18a033bSKonstantin Ananyev
11e18a033bSKonstantin Ananyev
12e18a033bSKonstantin Ananyev#if (NGX_HPUX)
13e18a033bSKonstantin Ananyev#define _XOPEN_SOURCE
14e18a033bSKonstantin Ananyev#define _XOPEN_SOURCE_EXTENDED  1
15e18a033bSKonstantin Ananyev#define _HPUX_ALT_XOPEN_SOCKET_API
16e18a033bSKonstantin Ananyev#endif
17e18a033bSKonstantin Ananyev
18e18a033bSKonstantin Ananyev
19e18a033bSKonstantin Ananyev#if (NGX_TRU64)
20e18a033bSKonstantin Ananyev#define _REENTRANT
21e18a033bSKonstantin Ananyev#endif
22e18a033bSKonstantin Ananyev
23e18a033bSKonstantin Ananyev
24e18a033bSKonstantin Ananyev#if (NGX_GNU_HURD)
25e18a033bSKonstantin Ananyev#ifndef _GNU_SOURCE
26e18a033bSKonstantin Ananyev#define _GNU_SOURCE             /* accept4() */
27e18a033bSKonstantin Ananyev#endif
28e18a033bSKonstantin Ananyev#define _FILE_OFFSET_BITS       64
29e18a033bSKonstantin Ananyev#endif
30e18a033bSKonstantin Ananyev
31e18a033bSKonstantin Ananyev
32e18a033bSKonstantin Ananyev#ifdef __CYGWIN__
33e18a033bSKonstantin Ananyev#define timezonevar             /* timezone is variable */
34e18a033bSKonstantin Ananyev#define NGX_BROKEN_SCM_RIGHTS   1
35e18a033bSKonstantin Ananyev#endif
36e18a033bSKonstantin Ananyev
37e18a033bSKonstantin Ananyev
38e18a033bSKonstantin Ananyev#include <sys/types.h>
39e18a033bSKonstantin Ananyev#include <sys/time.h>
40e18a033bSKonstantin Ananyev#if (NGX_HAVE_UNISTD_H)
41e18a033bSKonstantin Ananyev#include <unistd.h>
42e18a033bSKonstantin Ananyev#endif
43e18a033bSKonstantin Ananyev#if (NGX_HAVE_INTTYPES_H)
44e18a033bSKonstantin Ananyev#include <inttypes.h>
45e18a033bSKonstantin Ananyev#endif
46e18a033bSKonstantin Ananyev#include <stdarg.h>
47e18a033bSKonstantin Ananyev#include <stddef.h>             /* offsetof() */
48e18a033bSKonstantin Ananyev#include <stdio.h>
49e18a033bSKonstantin Ananyev#include <stdlib.h>
50e18a033bSKonstantin Ananyev#include <ctype.h>
51e18a033bSKonstantin Ananyev#include <errno.h>
52e18a033bSKonstantin Ananyev#include <string.h>
53e18a033bSKonstantin Ananyev#include <signal.h>
54e18a033bSKonstantin Ananyev#include <pwd.h>
55e18a033bSKonstantin Ananyev#include <grp.h>
56e18a033bSKonstantin Ananyev#include <dirent.h>
57e18a033bSKonstantin Ananyev#include <glob.h>
58e18a033bSKonstantin Ananyev#include <time.h>
59e18a033bSKonstantin Ananyev#if (NGX_HAVE_SYS_PARAM_H)
60e18a033bSKonstantin Ananyev#include <sys/param.h>          /* statfs() */
61e18a033bSKonstantin Ananyev#endif
62e18a033bSKonstantin Ananyev#if (NGX_HAVE_SYS_MOUNT_H)
63e18a033bSKonstantin Ananyev#include <sys/mount.h>          /* statfs() */
64e18a033bSKonstantin Ananyev#endif
65e18a033bSKonstantin Ananyev#if (NGX_HAVE_SYS_STATVFS_H)
66e18a033bSKonstantin Ananyev#include <sys/statvfs.h>        /* statvfs() */
67e18a033bSKonstantin Ananyev#endif
68e18a033bSKonstantin Ananyev
69e18a033bSKonstantin Ananyev#if (NGX_HAVE_SYS_FILIO_H)
70e18a033bSKonstantin Ananyev#include <sys/filio.h>          /* FIONBIO */
71e18a033bSKonstantin Ananyev#endif
72e18a033bSKonstantin Ananyev#include <sys/ioctl.h>          /* FIONBIO */
73e18a033bSKonstantin Ananyev
74e18a033bSKonstantin Ananyev#include <sys/uio.h>
75e18a033bSKonstantin Ananyev#include <sys/stat.h>
76e18a033bSKonstantin Ananyev#include <fcntl.h>
77e18a033bSKonstantin Ananyev
78e18a033bSKonstantin Ananyev#include <sys/wait.h>
79e18a033bSKonstantin Ananyev#include <sys/mman.h>
80e18a033bSKonstantin Ananyev#include <sys/resource.h>
81e18a033bSKonstantin Ananyev#include <sched.h>
82e18a033bSKonstantin Ananyev
83e18a033bSKonstantin Ananyev#include <sys/socket.h>
84e18a033bSKonstantin Ananyev#include <netinet/in.h>
85e18a033bSKonstantin Ananyev#include <netinet/tcp.h>        /* TCP_NODELAY */
86e18a033bSKonstantin Ananyev#include <arpa/inet.h>
87e18a033bSKonstantin Ananyev#include <netdb.h>
88e18a033bSKonstantin Ananyev#include <sys/un.h>
89e18a033bSKonstantin Ananyev
90e18a033bSKonstantin Ananyev#if (NGX_HAVE_LIMITS_H)
91e18a033bSKonstantin Ananyev#include <limits.h>             /* IOV_MAX */
92e18a033bSKonstantin Ananyev#endif
93e18a033bSKonstantin Ananyev
94e18a033bSKonstantin Ananyev#ifdef __CYGWIN__
95e18a033bSKonstantin Ananyev#include <malloc.h>             /* memalign() */
96e18a033bSKonstantin Ananyev#endif
97e18a033bSKonstantin Ananyev
98e18a033bSKonstantin Ananyev#if (NGX_HAVE_CRYPT_H)
99e18a033bSKonstantin Ananyev#include <crypt.h>
100e18a033bSKonstantin Ananyev#endif
101e18a033bSKonstantin Ananyev
102e18a033bSKonstantin Ananyev
103e18a033bSKonstantin Ananyev#ifndef IOV_MAX
104e18a033bSKonstantin Ananyev#define IOV_MAX   16
105e18a033bSKonstantin Ananyev#endif
106e18a033bSKonstantin Ananyev
107e18a033bSKonstantin Ananyev
108e18a033bSKonstantin Ananyev#include <ngx_auto_config.h>
109e18a033bSKonstantin Ananyev
110e18a033bSKonstantin Ananyev
111e18a033bSKonstantin Ananyev#if (NGX_HAVE_DLOPEN)
112e18a033bSKonstantin Ananyev#include <dlfcn.h>
113e18a033bSKonstantin Ananyev#endif
114e18a033bSKonstantin Ananyev
115e18a033bSKonstantin Ananyev
116e18a033bSKonstantin Ananyev#if (NGX_HAVE_POSIX_SEM)
117e18a033bSKonstantin Ananyev#include <semaphore.h>
118e18a033bSKonstantin Ananyev#endif
119e18a033bSKonstantin Ananyev
120e18a033bSKonstantin Ananyev
121e18a033bSKonstantin Ananyev#if (NGX_HAVE_POLL)
122e18a033bSKonstantin Ananyev#include <poll.h>
123e18a033bSKonstantin Ananyev#endif
124e18a033bSKonstantin Ananyev
125e18a033bSKonstantin Ananyev
126e18a033bSKonstantin Ananyev#if (NGX_HAVE_KQUEUE)
127e18a033bSKonstantin Ananyev#include <sys/event.h>
128e18a033bSKonstantin Ananyev#endif
129e18a033bSKonstantin Ananyev
130e18a033bSKonstantin Ananyev
131e18a033bSKonstantin Ananyev#if (NGX_HAVE_DEVPOLL) && !(NGX_TEST_BUILD_DEVPOLL)
132e18a033bSKonstantin Ananyev#include <sys/ioctl.h>
133e18a033bSKonstantin Ananyev#include <sys/devpoll.h>
134e18a033bSKonstantin Ananyev#endif
135e18a033bSKonstantin Ananyev
136e18a033bSKonstantin Ananyev
137e18a033bSKonstantin Ananyev#if (NGX_HAVE_FILE_AIO)
138e18a033bSKonstantin Ananyev#include <aio.h>
139e18a033bSKonstantin Ananyevtypedef struct aiocb  ngx_aiocb_t;
140e18a033bSKonstantin Ananyev#endif
141e18a033bSKonstantin Ananyev
142e18a033bSKonstantin Ananyev
143e18a033bSKonstantin Ananyev#define NGX_LISTEN_BACKLOG  511
144e18a033bSKonstantin Ananyev
145e18a033bSKonstantin Ananyev#define ngx_debug_init()
146e18a033bSKonstantin Ananyev
147e18a033bSKonstantin Ananyev
148e18a033bSKonstantin Ananyev#if (__FreeBSD__) && (__FreeBSD_version < 400017)
149e18a033bSKonstantin Ananyev
150e18a033bSKonstantin Ananyev#include <sys/param.h>          /* ALIGN() */
151e18a033bSKonstantin Ananyev
152e18a033bSKonstantin Ananyev/*
153e18a033bSKonstantin Ananyev * FreeBSD 3.x has no CMSG_SPACE() and CMSG_LEN() and has the broken CMSG_DATA()
154e18a033bSKonstantin Ananyev */
155e18a033bSKonstantin Ananyev
156e18a033bSKonstantin Ananyev#undef  CMSG_SPACE
157e18a033bSKonstantin Ananyev#define CMSG_SPACE(l)       (ALIGN(sizeof(struct cmsghdr)) + ALIGN(l))
158e18a033bSKonstantin Ananyev
159e18a033bSKonstantin Ananyev#undef  CMSG_LEN
160e18a033bSKonstantin Ananyev#define CMSG_LEN(l)         (ALIGN(sizeof(struct cmsghdr)) + (l))
161e18a033bSKonstantin Ananyev
162e18a033bSKonstantin Ananyev#undef  CMSG_DATA
163e18a033bSKonstantin Ananyev#define CMSG_DATA(cmsg)     ((u_char *)(cmsg) + ALIGN(sizeof(struct cmsghdr)))
164e18a033bSKonstantin Ananyev
165e18a033bSKonstantin Ananyev#endif
166e18a033bSKonstantin Ananyev
167e18a033bSKonstantin Ananyev
168e18a033bSKonstantin Ananyevextern char **environ;
169e18a033bSKonstantin Ananyev
170e18a033bSKonstantin Ananyev
171e18a033bSKonstantin Ananyev#endif /* _NGX_POSIX_CONFIG_H_INCLUDED_ */
172