aboutsummaryrefslogtreecommitdiff
path: root/src/os/unix
diff options
context:
space:
mode:
authorIgor Sysoev <igor@sysoev.ru>2002-08-23 16:14:30 +0000
committerIgor Sysoev <igor@sysoev.ru>2002-08-23 16:14:30 +0000
commit83661a922b26d84230ae0cc39f161323797cbb6c (patch)
tree398a4b6abb78847564a4e8425ff5122c6c2a1ce5 /src/os/unix
parent4e5e1171085a2235863baf7dddbd1477f817ae58 (diff)
downloadnginx-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.h5
-rw-r--r--src/os/unix/ngx_file.c61
-rw-r--r--src/os/unix/ngx_file.h9
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