summaryrefslogtreecommitdiffhomepage
path: root/src/nxt_test_build.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/nxt_test_build.h')
-rw-r--r--src/nxt_test_build.h274
1 files changed, 274 insertions, 0 deletions
diff --git a/src/nxt_test_build.h b/src/nxt_test_build.h
new file mode 100644
index 00000000..6513e748
--- /dev/null
+++ b/src/nxt_test_build.h
@@ -0,0 +1,274 @@
+
+/*
+ * Copyright (C) Igor Sysoev
+ * Copyright (C) NGINX, Inc.
+ */
+
+
+#ifndef _NXT_UNIX_TEST_BUILD_H_INCLUDED_
+#define _NXT_UNIX_TEST_BUILD_H_INCLUDED_
+
+
+#if (NXT_TEST_BUILD_EPOLL)
+
+#define NXT_HAVE_EPOLL 1
+#define NXT_HAVE_EPOLL_EDGE 1
+#define NXT_HAVE_EVENTFD 1
+#define NXT_HAVE_SIGNALFD 1
+#define NXT_HAVE_ACCEPT4 1
+
+/* Linux epoll declarations */
+
+#define EPOLLIN 0x00000001
+#define EPOLLPRI 0x00000002
+#define EPOLLOUT 0x00000004
+#define EPOLLERR 0x00000008
+#define EPOLLHUP 0x00000010
+#define EPOLLRDNORM 0x00000040
+#define EPOLLRDBAND 0x00000080
+#define EPOLLWRNORM 00000x0100
+#define EPOLLWRBAND 0x00000200
+#define EPOLLMSG 0x00000400
+#define EPOLLRDHUP 0x00002000
+
+#define EPOLLET 0x80000000
+#define EPOLLONESHOT 0x40000000
+
+#define EPOLL_CTL_ADD 1
+#define EPOLL_CTL_DEL 2
+#define EPOLL_CTL_MOD 3
+
+#define EFD_SEMAPHORE 1
+#define EFD_NONBLOCK 04000
+
+
+typedef union epoll_data {
+ void *ptr;
+ int fd;
+ uint32_t u32;
+ uint64_t u64;
+} epoll_data_t;
+
+
+struct epoll_event {
+ uint32_t events;
+ epoll_data_t data;
+};
+
+
+struct signalfd_siginfo {
+ uint32_t ssi_signo; /* Signal number */
+ int32_t ssi_errno; /* Error number (unused) */
+ int32_t ssi_code; /* Signal code */
+ uint32_t ssi_pid; /* PID of sender */
+ uint32_t ssi_uid; /* Real UID of sender */
+ int32_t ssi_fd; /* File descriptor (SIGIO) */
+ uint32_t ssi_tid; /* Kernel timer ID (POSIX timers) */
+ uint32_t ssi_band; /* Band event (SIGIO) */
+ uint32_t ssi_overrun; /* POSIX timer overrun count */
+ uint32_t ssi_trapno; /* Trap number that caused signal */
+ int32_t ssi_status; /* Exit status or signal (SIGCHLD) */
+ int32_t ssi_int; /* Integer sent by sigqueue(2) */
+ uint64_t ssi_ptr; /* Pointer sent by sigqueue(2) */
+ uint64_t ssi_utime; /* User CPU time consumed (SIGCHLD) */
+ uint64_t ssi_stime; /* System CPU time consumed (SIGCHLD) */
+ uint64_t ssi_addr; /* Address that generated signal
+ (for hardware-generated signals) */
+ uint8_t pad[8]; /* Pad size to 128 bytes (allow for
+ additional fields in the future) */
+};
+
+
+int epoll_create(int size);
+int epoll_ctl(int epfd, int op, int fd, struct epoll_event *event);
+int epoll_wait(int epfd, struct epoll_event *events, int nevents, int timeout);
+
+int eventfd(u_int initval, int flags);
+int signalfd(int fd, const sigset_t *mask, int flags);
+
+#define SOCK_NONBLOCK 04000
+
+int accept4(int sockfd, struct sockaddr *addr, socklen_t *addrlen, int flags);
+
+#endif
+
+
+#if (NXT_TEST_BUILD_EVENTPORT)
+
+#include <poll.h>
+
+#define NXT_HAVE_EVENTPORT 1
+
+#define ushort_t u_short
+#define uint_t u_int
+
+/* Solaris eventport declarations */
+
+#define PORT_SOURCE_AIO 1
+#define PORT_SOURCE_TIMER 2
+#define PORT_SOURCE_USER 3
+#define PORT_SOURCE_FD 4
+#define PORT_SOURCE_ALERT 5
+#define PORT_SOURCE_MQ 6
+#define PORT_SOURCE_FILE 7
+
+#ifndef ETIME
+#define ETIME 62
+#endif
+
+
+typedef struct {
+ int portev_events; /* event data is source specific */
+ ushort_t portev_source; /* event source */
+ ushort_t portev_pad; /* port internal use */
+ uintptr_t portev_object; /* source specific object */
+ void *portev_user; /* user cookie */
+} port_event_t;
+
+
+typedef struct timespec timespec_t;
+typedef struct timespec timestruc_t;
+
+
+typedef struct file_obj {
+ timestruc_t fo_atime; /* Access time from stat(2) */
+ timestruc_t fo_mtime; /* Modification time from stat(2) */
+ timestruc_t fo_ctime; /* Change time from stat(2) */
+ uintptr_t fo_pad[3]; /* For future expansion */
+ char *fo_name; /* Null terminated file name */
+} file_obj_t;
+
+
+int port_create(void);
+int port_associate(int port, int source, uintptr_t object, int events,
+ void *user);
+int port_dissociate(int port, int source, uintptr_t object);
+int port_send(int port, int events, void *user);
+int port_getn(int port, port_event_t list[], uint_t max, uint_t *nget,
+ const timespec_t *timeout);
+
+#endif
+
+
+#if (NXT_TEST_BUILD_DEVPOLL)
+
+#define NXT_HAVE_DEVPOLL 1
+
+#include <poll.h>
+#include <sys/ioctl.h>
+
+/* Solaris /dev/poll declarations */
+
+#define POLLREMOVE 0x0800
+#define DP_POLL 0xD001
+#define DP_ISPOLLED 0xD002
+
+
+struct dvpoll {
+ struct pollfd *dp_fds;
+ int dp_nfds;
+ int dp_timeout;
+};
+
+#endif
+
+
+#if (NXT_TEST_BUILD_POLLSET)
+
+#define NXT_HAVE_POLLSET 1
+
+#include <poll.h>
+
+/* AIX pollset declarations */
+
+#define PS_ADD 0x0
+#define PS_MOD 0x1
+#define PS_DELETE 0x2
+
+
+typedef int pollset_t;
+
+struct poll_ctl {
+ short cmd;
+ short events;
+ int fd;
+};
+
+
+pollset_t pollset_create(int maxfd);
+int pollset_destroy(pollset_t ps);
+int pollset_query(pollset_t ps, struct pollfd *pollfd_query);
+int pollset_ctl(pollset_t ps, struct poll_ctl *pollctl_array, int array_length);
+int pollset_poll(pollset_t ps, struct pollfd *polldata_array, int array_length,
+ int timeout);
+
+#endif
+
+
+#if (NXT_TEST_BUILD_FREEBSD_SENDFILE || NXT_TEST_BUILD_MACOSX_SENDFILE)
+
+#if !(NXT_FREEBSD) && !(NXT_MACOSX)
+
+struct sf_hdtr {
+ struct iovec *headers;
+ int hdr_cnt;
+ struct iovec *trailers;
+ int trl_cnt;
+};
+
+#endif
+
+#endif
+
+
+#if (NXT_TEST_BUILD_SOLARIS_SENDFILEV)
+
+/* Solaris declarations */
+
+typedef struct sendfilevec {
+ int sfv_fd;
+ u_int sfv_flag;
+ off_t sfv_off;
+ size_t sfv_len;
+} sendfilevec_t;
+
+#define SFV_FD_SELF -2
+
+ssize_t sendfilev(int fd, const struct sendfilevec *vec, int sfvcnt,
+ size_t *xferred);
+
+#endif
+
+
+#if (NXT_TEST_BUILD_AIX_SEND_FILE)
+
+#ifndef uint_t
+#define uint_t u_int
+#endif
+
+struct sf_parms {
+ void *header_data;
+ uint_t header_length;
+
+ int file_descriptor;
+ uint64_t file_size;
+ uint64_t file_offset;
+ int64_t file_bytes;
+
+ void *trailer_data;
+ uint_t trailer_length;
+
+ uint64_t bytes_sent;
+};
+
+#define SF_CLOSE 0x00000001 /* close the socket after completion */
+#define SF_REUSE 0x00000002 /* reuse socket. not supported */
+#define SF_DONT_CACHE 0x00000004 /* don't apply network buffer cache */
+#define SF_SYNC_CACHE 0x00000008 /* sync/update network buffer cache */
+
+ssize_t send_file(int *s, struct sf_parms *sf_iobuf, uint_t flags);
+
+#endif
+
+
+#endif /* _NXT_UNIX_TEST_BUILD_H_INCLUDED_ */