mirror of
https://github.com/nginx/nginx.git
synced 2024-12-22 15:13:28 -06:00
7494490978
*) Darwin sendfile() support
116 lines
2.9 KiB
Plaintext
116 lines
2.9 KiB
Plaintext
|
|
# Copyright (C) Igor Sysoev
|
|
|
|
|
|
have=NGX_DARWIN . auto/have_headers
|
|
|
|
CORE_INCS="$UNIX_INCS"
|
|
CORE_DEPS="$UNIX_DEPS $DARWIN_DEPS"
|
|
CORE_SRCS="$UNIX_SRCS $DARWIN_SRCS"
|
|
|
|
|
|
|
|
ngx_spacer='
|
|
'
|
|
|
|
# kqueue
|
|
|
|
echo " + kqueue found"
|
|
have=NGX_HAVE_KQUEUE . auto/have
|
|
have=NGX_HAVE_CLEAR_EVENT . auto/have
|
|
EVENT_MODULES="$EVENT_MODULES $KQUEUE_MODULE"
|
|
CORE_SRCS="$CORE_SRCS $KQUEUE_SRCS"
|
|
EVENT_FOUND=YES
|
|
NGX_KQUEUE_CHECKED=YES
|
|
|
|
ngx_feature="kqueue's EVFILT_TIMER"
|
|
ngx_feature_name="NGX_HAVE_TIMER_EVENT"
|
|
ngx_feature_run=yes
|
|
ngx_feature_incs="#include <sys/event.h>
|
|
#include <sys/time.h>"
|
|
ngx_feature_path=
|
|
ngx_feature_libs=
|
|
ngx_feature_test="int kq;
|
|
struct kevent kev;
|
|
struct timespec ts;
|
|
|
|
if ((kq = kqueue()) == -1) return 1;
|
|
|
|
kev.ident = 0;
|
|
kev.filter = EVFILT_TIMER;
|
|
kev.flags = EV_ADD|EV_ENABLE;
|
|
kev.fflags = 0;
|
|
kev.data = 1000;
|
|
kev.udata = 0;
|
|
|
|
ts.tv_sec = 0;
|
|
ts.tv_nsec = 0;
|
|
|
|
if (kevent(kq, &kev, 1, &kev, 1, &ts) == -1) return 1;
|
|
|
|
if (kev.flags & EV_ERROR) return 1;"
|
|
|
|
. auto/feature
|
|
|
|
|
|
ngx_feature="Darwin 64-bit kqueue millisecond timeout bug"
|
|
ngx_feature_name=NGX_DARWIN_KEVENT_BUG
|
|
ngx_feature_run=bug
|
|
ngx_feature_incs="#include <sys/event.h>
|
|
#include <sys/time.h>"
|
|
ngx_feature_path=
|
|
ngx_feature_libs=
|
|
ngx_feature_test="int kq;
|
|
struct kevent kev;
|
|
struct timespec ts;
|
|
struct timeval tv, tv0;
|
|
|
|
kq = kqueue();
|
|
|
|
ts.tv_sec = 0;
|
|
ts.tv_nsec = 999000000;
|
|
|
|
gettimeofday(&tv, 0);
|
|
kevent(kq, NULL, 0, &kev, 1, &ts);
|
|
gettimeofday(&tv0, 0);
|
|
timersub(&tv0, &tv, &tv);
|
|
|
|
if (tv.tv_sec * 1000000 + tv.tv_usec < 900000) return 1;"
|
|
|
|
. auto/feature
|
|
|
|
|
|
# sendfile()
|
|
|
|
CC_AUX_FLAGS="$CC_AUX_FLAGS"
|
|
ngx_feature="sendfile()"
|
|
ngx_feature_name="NGX_HAVE_SENDFILE"
|
|
ngx_feature_run=yes
|
|
ngx_feature_incs="#include <sys/types.h>
|
|
#include <sys/socket.h>
|
|
#include <sys/uio.h>
|
|
#include <sys/errno.h>"
|
|
ngx_feature_path=
|
|
ngx_feature_libs=
|
|
ngx_feature_test="int s = 0, fd = 1;
|
|
off_t n; off_t off = 0;
|
|
n = sendfile(s, fd, off, &n, NULL, 0);
|
|
if (n == -1 && errno == ENOSYS) return 1"
|
|
. auto/feature
|
|
|
|
if [ $ngx_found = yes ]; then
|
|
have=NGX_HAVE_SENDFILE . auto/have
|
|
CORE_SRCS="$CORE_SRCS $DARWIN_SENDFILE_SRCS"
|
|
fi
|
|
|
|
|
|
ngx_feature="atomic(3)"
|
|
ngx_feature_name=NGX_DARWIN_ATOMIC
|
|
ngx_feature_run=no
|
|
ngx_feature_incs="#include <libkern/OSAtomic.h>"
|
|
ngx_feature_path=
|
|
ngx_feature_libs=
|
|
ngx_feature_test="int32_t lock, n;
|
|
n = OSAtomicCompareAndSwap32Barrier(0, 1, lock)"
|
|
. auto/feature
|