Sergey Kandaurov
January 17, 2019 05:30AM
> On 17 Jan 2019, at 08:43, Sepherosa Ziehau <sepherosa@gmail.com> wrote:
>
> What's the preferred way to handle this? I am not sure whether you
> guys allow __FreeBSD_version testing etc.
>

This could be solved with autotests.

# HG changeset patch
# User Sergey Kandaurov <pluknet@nginx.com>
# Date 1547720890 0
# Thu Jan 17 10:28:10 2019 +0000
# Node ID d28513cd71bce227b4e159b7a3f518aa504232f0
# Parent 6d15e452fa2eaf19408e24a0d0fcc3a31344a289
Fixed portability issues with union sigval.

The sival_ptr field is now preferably used.

diff --git a/auto/unix b/auto/unix
--- a/auto/unix
+++ b/auto/unix
@@ -523,6 +523,7 @@ if [ $NGX_FILE_AIO = YES ]; then
ngx_feature_libs=
ngx_feature_test="struct aiocb iocb;
iocb.aio_sigevent.sigev_notify = SIGEV_KEVENT;
+ iocb.aio_sigevent.sigev_value.sival_ptr = NULL;
(void) aio_read(&iocb)"
. auto/feature

@@ -532,6 +533,22 @@ if [ $NGX_FILE_AIO = YES ]; then

if [ $ngx_found = no ]; then

+ ngx_feature="kqueue AIO support (legacy)"
+ ngx_feature_name="NGX_HAVE_FILE_AIO_LEGACY"
+ ngx_feature_test="struct aiocb iocb;
+ iocb.aio_sigevent.sigev_notify = SIGEV_KEVENT;
+ iocb.aio_sigevent.sigev_value.sigval_ptr = NULL;
+ (void) aio_read(&iocb)"
+ . auto/feature
+
+ if [ $ngx_found = yes ]; then
+ CORE_SRCS="$CORE_SRCS $FILE_AIO_SRCS"
+ have=NGX_HAVE_FILE_AIO . auto/have
+ fi
+ fi
+
+ if [ $ngx_found = no ]; then
+
ngx_feature="Linux AIO support"
ngx_feature_name="NGX_HAVE_FILE_AIO"
ngx_feature_run=no
diff --git a/src/os/unix/ngx_file_aio_read.c b/src/os/unix/ngx_file_aio_read.c
--- a/src/os/unix/ngx_file_aio_read.c
+++ b/src/os/unix/ngx_file_aio_read.c
@@ -110,8 +110,12 @@ ngx_file_aio_read(ngx_file_t *file, u_ch
#if (NGX_HAVE_KQUEUE)
aio->aiocb.aio_sigevent.sigev_notify_kqueue = ngx_kqueue;
aio->aiocb.aio_sigevent.sigev_notify = SIGEV_KEVENT;
+#if !(NGX_HAVE_FILE_AIO_LEGACY)
+ aio->aiocb.aio_sigevent.sigev_value.sival_ptr = ev;
+#else
aio->aiocb.aio_sigevent.sigev_value.sigval_ptr = ev;
#endif
+#endif
ev->handler = ngx_file_aio_event_handler;

n = aio_read(&aio->aiocb);


--
Sergey Kandaurov

_______________________________________________
nginx-devel mailing list
nginx-devel@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-devel
Subject Author Views Posted

aio/unix: Use signal.sival which is standard

Sepherosa Ziehau 206 January 07, 2019 10:38PM

Re: aio/unix: Use signal.sival which is standard

Sergey Kandaurov 75 January 09, 2019 06:54AM

Re: aio/unix: Use signal.sival which is standard

Sepherosa Ziehau 42 January 17, 2019 12:46AM

Re: aio/unix: Use signal.sival which is standard

Sergey Kandaurov 45 January 17, 2019 05:30AM

Re: aio/unix: Use signal.sival which is standard

Maxim Dounin 43 January 17, 2019 08:24AM

Re: aio/unix: Use signal.sival which is standard

Sergey Kandaurov 46 January 17, 2019 10:20AM

Re: aio/unix: Use signal.sival which is standard

Sepherosa Ziehau 37 January 18, 2019 02:40AM

Re: aio/unix: Use signal.sival which is standard

Sergey Kandaurov 43 January 18, 2019 05:24AM

Re: aio/unix: Use signal.sival which is standard

Sepherosa Ziehau 40 January 23, 2019 09:06PM

Re: aio/unix: Use signal.sival which is standard

Maxim Dounin 41 January 22, 2019 09:56AM

Re: aio/unix: Use signal.sival which is standard

Sepherosa Ziehau 41 January 23, 2019 09:10PM

Re: aio/unix: Use signal.sival which is standard

Maxim Dounin 44 January 24, 2019 10:00AM

Re: aio/unix: Use signal.sival which is standard

Sepherosa Ziehau 42 January 28, 2019 04:08AM

Re: aio/unix: Use signal.sival which is standard

Sergey Kandaurov 38 January 28, 2019 12:34PM

Re: aio/unix: Use signal.sival which is standard

Sepherosa Ziehau 44 January 29, 2019 10:18PM



Sorry, you do not have permission to post/reply in this forum.

Online Users

Guests: 94
Record Number of Users: 6 on February 13, 2018
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready