Welcome! Log In Create A New Profile

Advanced

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

Sepherosa Ziehau
January 23, 2019 09:10PM
On Tue, Jan 22, 2019 at 10:54 PM Maxim Dounin <mdounin@mdounin.ru> wrote:
> This needs to be extended with some background information -
> notably why it used to be sigval_ptr, and why to switch to
> sival_ptr.

I am not sure why it used to be sigval_ptr; seems to be a miss name in
FreeBSD. And the code seems to assume having KQUEUE == having
sigval_ptr.

As about why the switching:
- It's POSIX standard.
- It was noticed recently in DragonFly, since we removed this compat
field (sigval_ptr), since after scanning the source code in ports
system, nginx seems to be the only one using sigval_ptr.

Thanks,
sephe

>
> >
> > 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,7 +110,7 @@ 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;
> > - aio->aiocb.aio_sigevent.sigev_value.sigval_ptr = ev;
> > + aio->aiocb.aio_sigevent.sigev_value.sival_ptr = ev;
> > #endif
> > ev->handler = ngx_file_aio_event_handler;
> >
> > diff --git a/src/os/unix/ngx_freebsd_config.h b/src/os/unix/ngx_freebsd_config.h
> > --- a/src/os/unix/ngx_freebsd_config.h
> > +++ b/src/os/unix/ngx_freebsd_config.h
> > @@ -91,6 +91,10 @@
> > #if (NGX_HAVE_FILE_AIO)
> > #include <aio.h>
> > typedef struct aiocb ngx_aiocb_t;
> > +
> > +#if (__FreeBSD_version < 700005 && !defined __DragonFly__)
> > +#define sival_ptr sigval_ptr
> > +#endif
> > #endif
> >
> >
>
> Minor style nits:
>
> diff --git a/src/os/unix/ngx_freebsd_config.h b/src/os/unix/ngx_freebsd_config.h
> --- a/src/os/unix/ngx_freebsd_config.h
> +++ b/src/os/unix/ngx_freebsd_config.h
> @@ -89,12 +89,14 @@
>
>
> #if (NGX_HAVE_FILE_AIO)
> +
> #include <aio.h>
> typedef struct aiocb ngx_aiocb_t;
>
> #if (__FreeBSD_version < 700005 && !defined __DragonFly__)
> -#define sival_ptr sigval_ptr
> +#define sival_ptr sigval_ptr
> #endif
> +
> #endif
>
>
> > # HG changeset patch
> > # User Sergey Kandaurov <pluknet@nginx.com>
> > # Date 1547736673 0
> > # Thu Jan 17 14:51:13 2019 +0000
> > # Node ID c66911fc9924a60bb5d691ca00bc2fb1c3032866
> > # Parent baab2b35e8cc79cfdf9924d1752348e97c1da13e
> > Removed --test-build-eventport workaround for old FreeBSD versions.
> >
> > diff --git a/src/event/modules/ngx_eventport_module.c b/src/event/modules/ngx_eventport_module.c
> > --- a/src/event/modules/ngx_eventport_module.c
> > +++ b/src/event/modules/ngx_eventport_module.c
> > @@ -250,9 +250,7 @@ ngx_eventport_init(ngx_cycle_t *cycle, n
> >
> > ngx_memzero(&sev, sizeof(struct sigevent));
> > sev.sigev_notify = SIGEV_PORT;
> > -#if !(NGX_TEST_BUILD_EVENTPORT)
> > sev.sigev_value.sival_ptr = &pn;
> > -#endif
> >
> > if (timer_create(CLOCK_REALTIME, &sev, &event_timer) == -1) {
> > ngx_log_error(NGX_LOG_EMERG, cycle->log, ngx_errno,
>
> Looks fine.
>
> --
> Maxim Dounin
> http://mdounin.ru/
> _______________________________________________
> nginx-devel mailing list
> nginx-devel@nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-devel



--
Tomorrow Will Never Die
_______________________________________________
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 251 January 07, 2019 10:38PM

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

Sergey Kandaurov 108 January 09, 2019 06:54AM

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

Sepherosa Ziehau 64 January 17, 2019 12:46AM

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

Sergey Kandaurov 71 January 17, 2019 05:30AM

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

Maxim Dounin 70 January 17, 2019 08:24AM

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

Sergey Kandaurov 77 January 17, 2019 10:20AM

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

Sepherosa Ziehau 64 January 18, 2019 02:40AM

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

Sergey Kandaurov 72 January 18, 2019 05:24AM

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

Sepherosa Ziehau 65 January 23, 2019 09:06PM

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

Maxim Dounin 70 January 22, 2019 09:56AM

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

Sepherosa Ziehau 68 January 23, 2019 09:10PM

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

Maxim Dounin 71 January 24, 2019 10:00AM

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

Sepherosa Ziehau 68 January 28, 2019 04:08AM

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

Sergey Kandaurov 74 January 28, 2019 12:34PM

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

Sepherosa Ziehau 78 January 29, 2019 10:18PM



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

Online Users

Guests: 75
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