読者です 読者をやめる 読者になる 読者になる

ポジローぽけっと

昨日より今日、今日より明日を信じて、トライトライ

第十四回スパルタンプログラミング

何がしたいか?何が問題か?を意識して変なとこでぐだぐだ考えないこと

30分悩んで分からなかったら、早めにヘルプを出す。

やりたいこと

ubuntuで実行するとやっぱり動作するので、os xではだめなのは先週の理由があることとする。

裏取りをするためにnginxがaio_readつかっているようなので、そっちを読む

やったこと

  • ngx_aio_read.c
  • ngx_aio_read_chain.c

これくらいなら読めるようになった。眠いです。08/04/26:17

ngx_os.hに下記が定義されており、OS毎に関数ポインタ?を変えている。

typedef struct {
    ngx_recv_pt        recv;
    ngx_recv_chain_pt  recv_chain;
    ngx_recv_pt        udp_recv;
    ngx_send_pt        send;
    ngx_send_chain_pt  send_chain;
    ngx_uint_t         flags;
} ngx_os_io_t;

darwin

static ngx_os_io_t ngx_darwin_io = {
    ngx_unix_recv,
    ngx_readv_chain,
    ngx_udp_unix_recv,
    ngx_unix_send,
#if (NGX_HAVE_SENDFILE)
    ngx_darwin_sendfile_chain,
    NGX_IO_SENDFILE
#else
    ngx_writev_chain,
    0
#endif
};

aio

ngx_os_io_t ngx_os_aio = {
    ngx_aio_read,
    ngx_aio_read_chain,
    NULL,
    ngx_aio_write,
    ngx_aio_write_chain,                                                                                                                                               
    0
};

使われている証拠?

auto/os/freebsd|125 col 32| CORE_SRCS="$CORE_SRCS $AIO_SRCS" auto/sources|134 col 1| AIO_SRCS="src/event/modules/ngx_aio_module.c \ auto/sources|140 col 6| FILE_AIO_SRCS="src/os/unix/ngx_file_aio_read.c" auto/sources|141 col 7| LINUX_AIO_SRCS="src/os/unix/ngx_linux_aio_read.c"
auto/unix|400 col 37| CORE_SRCS="$CORE_SRCS $FILE_AIO_SRCS"
auto/unix|422 col 42| CORE_SRCS="$CORE_SRCS $LINUX_AIO_SRCS" auto/unix|440 col 42| CORE_SRCS="$CORE_SRCS $LINUX_AIO_SRCS"

darwinunixは分けて考えているのか?チェックして。