第十四回スパルタンプログラミング
何がしたいか?何が問題か?を意識して変なとこでぐだぐだ考えないこと
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"