Nginx-ru mailing list archive (nginx-ru@sysoev.ru)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: FreeBSD disk AIO support
- To: nginx-ru@xxxxxxxxx
- Subject: Re: FreeBSD disk AIO support
- From: Andrei Nigmatulin <andrei.nigmatulin@xxxxxxxxx>
- Date: Mon, 24 Aug 2009 04:57:36 +0400
- Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:from:to:subject:date :user-agent:references:in-reply-to:mime-version:content-type :content-transfer-encoding:content-disposition:message-id; bh=p8vUVSQucCoaSuwlAyzh4zzo0CRm0NWl4caCUqSppps=; b=aNHn0LtRtEAyYpvGxqeBWQa8GkDpYWGQ0xGzVDJXP4DGsnfgcJLq6XAMwLGECSZ4tH Ohr2g28+Rei3o2zTAgc/Ghrsy5wUt7As28zMjEXzpC6Odfun/jHFN1W7lnyFzh49DI2D ako2f8laUbRZAFoKe4/mtH8GbRMRiCby+RNc8=
- Domainkey-signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=from:to:subject:date:user-agent:references:in-reply-to:mime-version :content-type:content-transfer-encoding:content-disposition :message-id; b=QYQ51+WXFlYA3j4X75nGIzVR0HN1iqqKReSkXQ0eFZv9xBwx3sjrzSJEAhHky3askJ HiFElN8tPEf1BNJ39iywxTKgGu5VtzlBK8U9f1dlGIIMy39XXPDADbXKJAhfudgGDzdU VfLWBXk1tVHMzr8V/aA5QMji2hMU9BcEMLWAI=
- In-reply-to: <200908240435.26225.andrei.nigmatulin@xxxxxxxxx>
- References: <20090823161150.GC49906@xxxxxxxxxxxxx> <200908240223.55166.andrei.nigmatulin@xxxxxxxxx> <200908240435.26225.andrei.nigmatulin@xxxxxxxxx>
On Monday 24 August 2009 04:35, Andrei Nigmatulin wrote:
> On Monday 24 August 2009 02:23, Andrei Nigmatulin wrote:
> > On Monday 24 August 2009 01:13, Igor Sysoev wrote:
> > > /usr/include/libaio.h:
> > >
> > > struct iocb {
> > > PADDEDptr(void *data, __pad1); /* Return in the io completion
> > > event */ PADDED(unsigned key, __pad2); /* For use in identifying io
> > > requests */
> > >
> > > short aio_lio_opcode;
> > > short aio_reqprio;
> > > int aio_fildes;
> > >
> > > union {
> > > struct io_iocb_common c;
> > > ...
> > >
> > > struct io_iocb_common {
> > > PADDEDptr(void *buf, __pad1);
> > > PADDEDul(nbytes, __pad2);
> > > long long offset;
> > > long long __pad3, __pad4;
> > > }; /* result code is the amount read or -'ve errno */
> > >
> > >
> > > Полей .aio_flags и .aio_resfd в struct iocb нет. Ну и как это собирать
> > > ?
> >
> > А если
> >
> > -#include <libaio.h>
> > +#include <linux/aio_abi.h>
> >
> > ?
>
> Похоже, что libaio >= 0.3.107 имеет поддержку eventfd (патч добавил Rusty
> Russell) и искомые поля есть в io_iocb_common.
Имхо, есть смысл делать в обход libaio, напрямую. Статус библиотеки непонятен,
домашней страницы я не нашел, необходимая для eventfd версия >= 0.3.107 есть
далеко не во всех дистрибутивах.
Зато нашел пример как можно использовать io_submit/io_getevents напрямую без
libaio, с использованием linux/aio_abi.h:
http://www.xmailserver.org/eventfd-aio-test.c
Туда надо добавить:
#include <linux/aio_abi.h>
#include <sys/eventfd.h>
И немного почистить.
--
Andrei Nigmatulin
GPG PUB KEY 6449830D
Now I lay me down to sleep(3)
Pray the OS my core to keep
If I die before I wake
Pray the Disk my core to take
|