diff options
author | Igor Sysoev <igor@sysoev.ru> | 2002-08-23 16:14:30 +0000 |
---|---|---|
committer | Igor Sysoev <igor@sysoev.ru> | 2002-08-23 16:14:30 +0000 |
commit | 83661a922b26d84230ae0cc39f161323797cbb6c (patch) | |
tree | 398a4b6abb78847564a4e8425ff5122c6c2a1ce5 /src/os/unix | |
parent | 4e5e1171085a2235863baf7dddbd1477f817ae58 (diff) | |
download | nginx-83661a922b26d84230ae0cc39f161323797cbb6c.tar.gz nginx-83661a922b26d84230ae0cc39f161323797cbb6c.zip |
nginx-0.0.1-2002-08-23-20:14:30 import
Diffstat (limited to 'src/os/unix')
-rw-r--r-- | src/os/unix/ngx_errno.h | 5 | ||||
-rw-r--r-- | src/os/unix/ngx_file.c | 61 | ||||
-rw-r--r-- | src/os/unix/ngx_file.h | 9 |
3 files changed, 70 insertions, 5 deletions
diff --git a/src/os/unix/ngx_errno.h b/src/os/unix/ngx_errno.h index 2649fe9b4..dd66db29d 100644 --- a/src/os/unix/ngx_errno.h +++ b/src/os/unix/ngx_errno.h @@ -12,8 +12,9 @@ typedef int ngx_err_t; #define NGX_EAGAIN EWOULDBLOCK #define NGX_EADDRINUSE EADDRINUSE -#define ngx_errno errno -#define ngx_socket_errno errno +#define ngx_errno errno +#define ngx_socket_errno errno +#define ngx_set_socket_errno(err) errno = err #define ngx_strerror_r(err, errstr, size) \ ngx_cpystrn(errstr, strerror(err), size) - (errstr) diff --git a/src/os/unix/ngx_file.c b/src/os/unix/ngx_file.c new file mode 100644 index 000000000..1b05b920e --- /dev/null +++ b/src/os/unix/ngx_file.c @@ -0,0 +1,61 @@ + + +ssize_t ngx_read_file(ngx_file_t file, char *buf, size_t size) +{ + read(); +} + +#if 0 + +ssize_t ngx_read_file(ngx_file_t *file, char *buf, size_t size, off_t offset) +{ + if (!file->read->ready) { + + ngx_memzero(&file->iocb, sizeof(iocb)); + file->iocb.aio_fildes = file->fd; + file->iocb.aio_buf = buf; + file->iocb.aio_nbytes = size; + file->iocb.aio_offset = offset; +#if (USE_AIO_KQUEUE) + file->iocb.aio_sigevent.sigev_notify = SIGEV_KEVENT; + file->iocb.aio_sigevent.sigev_notify_kqueue = tid->kq; + file->iocb.aio_sigevent.sigev_value = (union sigval) file; +#endif +#if (USE_AIO_SIGNAL) + file->iocb.aio_sigevent.sigev_notify = SIGEV_SIGNAL; + file->iocb.aio_sigevent.sigev_signo = NGX_SIGAIO; +#ifndef __FreeBSD__ + file->iocb.aio_sigevent.sigev_value.sival_ptr = file; +#endif +#endif + + if (aio_read(&file->iocb) == -1) { + ngx_log_error(NGX_LOG_ERR, file->log, ngx_errno, + "aio_read() failed"); + return NGX_ERROR; + + n = aio_error(&file->iocb); + if (n == EINPROGRESS) + return NGX_AGAIN; + + if (n == -1) { + ngx_log_error(NGX_LOG_ERR, file->log, ngx_errno, + "aio_read() failed"); + return NGX_ERROR; + } + } + + ngx_assert(file->iocb.aio_buf == buf), return NGX_ERROR, + "ngx_aio_read_file: another buffer is passed"); + + n = aio_return(&file->iocb); + if (n == -1) { + ngx_log_error(NGX_LOG_ERR, file->log, ngx_errno, + "aio_read() failed"); + return NGX_ERROR; + } + + return n; +} + +#endif diff --git a/src/os/unix/ngx_file.h b/src/os/unix/ngx_file.h index 0e05b8424..5fda89624 100644 --- a/src/os/unix/ngx_file.h +++ b/src/os/unix/ngx_file.h @@ -10,16 +10,19 @@ typedef struct stat ngx_file_info_t; #define ngx_open_file open -#define ngx_open_file_n "open" +#define ngx_open_file_n "open()" + +#define ngx_read_file read +#define ngx_read_file_n "read()" #define NGX_FILE_RDONLY O_RDONLY #define ngx_file_type(file, sb) stat(file, sb) -#define ngx_file_type_n "stat" +#define ngx_file_type_n "stat()" #define ngx_stat_fd(fd, sb) fstat(fd, sb) -#define ngx_stat_fd_n "fstat" +#define ngx_stat_fd_n "fstat()" #define ngx_is_dir(sb) (S_ISDIR(sb.st_mode)) #define ngx_file_size(sb) sb.st_size |