Mercurial > hg > nginx-vendor-1-0
diff src/os/unix/ngx_os.h @ 0:f0b350454894 NGINX_0_1_0
nginx 0.1.0
*) The first public version.
author | Igor Sysoev <http://sysoev.ru> |
---|---|
date | Mon, 04 Oct 2004 00:00:00 +0400 |
parents | |
children | 4b2dafa26fe2 |
line wrap: on
line diff
new file mode 100644 --- /dev/null +++ b/src/os/unix/ngx_os.h @@ -0,0 +1,84 @@ + +/* + * 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 + +#if (HAVE_SENDFILE) +#define NGX_HAVE_SENDFILE NGX_IO_SENDFILE +#else +#define NGX_HAVE_SENDFILE 0 +#endif + +#if (HAVE_ZEROCOPY) +#define NGX_HAVE_ZEROCOPY NGX_IO_ZEROCOPY +#else +#define NGX_HAVE_ZEROCOPY 0 +#endif + + +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_send_pt send; + ngx_send_chain_pt send_chain; + ngx_uint_t flags; +} ngx_os_io_t; + + +void ngx_debug_init(); +ngx_int_t ngx_os_init(ngx_log_t *log); +void ngx_os_status(ngx_log_t *log); +ngx_int_t ngx_daemon(ngx_log_t *log); +ngx_int_t ngx_posix_init(ngx_log_t *log); +void ngx_posix_status(ngx_log_t *log); +ngx_int_t ngx_posix_post_conf_init(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_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_int_t ngx_inherited_nonblocking; + +#define ngx_stderr_fileno STDERR_FILENO + +#ifdef __FreeBSD__ +#include <ngx_freebsd.h> +#endif + + +#ifdef __linux__ +#include <ngx_linux.h> +#endif + + +#ifdef SOLARIS +#include <ngx_solaris.h> +#endif + + +#endif /* _NGX_OS_H_INCLUDED_ */