|  |  | 
|  | /* | 
|  | * Copyright (C) Igor Sysoev | 
|  | */ | 
|  |  | 
|  |  | 
|  | #ifndef _NGX_OS_H_INCLUDED_ | 
|  | #define _NGX_OS_H_INCLUDED_ | 
|  |  | 
|  |  | 
|  | #include <ngx_config.h> | 
|  | #include <ngx_core.h> | 
|  |  | 
|  |  | 
|  | #define NGX_IO_SENDFILE    1 | 
|  | #define NGX_IO_ZEROCOPY    2 | 
|  |  | 
|  |  | 
|  | typedef ssize_t (*ngx_recv_pt)(ngx_connection_t *c, u_char *buf, size_t size); | 
|  | typedef ssize_t (*ngx_recv_chain_pt)(ngx_connection_t *c, ngx_chain_t *in); | 
|  | typedef ssize_t (*ngx_send_pt)(ngx_connection_t *c, u_char *buf, size_t size); | 
|  | typedef ngx_chain_t *(*ngx_send_chain_pt)(ngx_connection_t *c, ngx_chain_t *in, | 
|  | off_t limit); | 
|  |  | 
|  | 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; | 
|  |  | 
|  |  | 
|  | void ngx_debug_init(void); | 
|  | ngx_int_t ngx_os_init(ngx_log_t *log); | 
|  | void ngx_os_status(ngx_log_t *log); | 
|  | ngx_int_t ngx_os_specific_init(ngx_log_t *log); | 
|  | void ngx_os_specific_status(ngx_log_t *log); | 
|  | ngx_int_t ngx_daemon(ngx_log_t *log); | 
|  |  | 
|  |  | 
|  | ssize_t ngx_unix_recv(ngx_connection_t *c, u_char *buf, size_t size); | 
|  | ssize_t ngx_readv_chain(ngx_connection_t *c, ngx_chain_t *entry); | 
|  | ssize_t ngx_udp_unix_recv(ngx_connection_t *c, u_char *buf, size_t size); | 
|  | ssize_t ngx_unix_send(ngx_connection_t *c, u_char *buf, size_t size); | 
|  | ngx_chain_t *ngx_writev_chain(ngx_connection_t *c, ngx_chain_t *in, | 
|  | off_t limit); | 
|  |  | 
|  |  | 
|  | extern ngx_os_io_t  ngx_os_io; | 
|  | extern ngx_int_t    ngx_ncpu; | 
|  | extern ngx_int_t    ngx_max_sockets; | 
|  | extern ngx_uint_t   ngx_inherited_nonblocking; | 
|  | extern ngx_uint_t   ngx_tcp_nodelay_and_tcp_nopush; | 
|  |  | 
|  | #define ngx_stderr_fileno  STDERR_FILENO | 
|  |  | 
|  | #if (NGX_FREEBSD) | 
|  | #include <ngx_freebsd.h> | 
|  |  | 
|  |  | 
|  | #elif (NGX_LINUX) | 
|  | #include <ngx_linux.h> | 
|  |  | 
|  |  | 
|  | #elif (NGX_SOLARIS) | 
|  | #include <ngx_solaris.h> | 
|  |  | 
|  |  | 
|  | #elif (NGX_DARWIN) | 
|  | #include <ngx_darwin.h> | 
|  | #endif | 
|  |  | 
|  |  | 
|  | #endif /* _NGX_OS_H_INCLUDED_ */ |