comparison src/os/unix/ngx_files.c @ 8:708f8bb772ec

nginx-0.0.1-2002-09-02-18:48:24 import
author Igor Sysoev <igor@sysoev.ru>
date Mon, 02 Sep 2002 14:48:24 +0000
parents src/os/unix/ngx_file.c@669801705ab1
children 6f58641241bb
comparison
equal deleted inserted replaced
7:b5481d6fbbd4 8:708f8bb772ec
1
2 #include <ngx_core.h>
3 #include <ngx_file.h>
4
5 ssize_t ngx_read_file(ngx_file_t *file, char *buf, size_t size, off_t offset)
6 {
7 ssize_t n;
8
9 ngx_log_debug(file->log, "read: %x, %d, %qd" _ buf _ size _ offset);
10
11 n = pread(file->fd, buf, size, offset);
12
13 if (n == NGX_ERROR)
14 ngx_log_error(NGX_LOG_ERR, file->log, ngx_errno, "read() failed");
15
16 return n;
17 }
18
19 #if 0
20
21 ssize_t ngx_read_file(ngx_file_t *file, char *buf, size_t size, off_t offset)
22 {
23 if (!file->read->ready) {
24
25 ngx_memzero(&file->iocb, sizeof(iocb));
26 file->iocb.aio_fildes = file->fd;
27 file->iocb.aio_buf = buf;
28 file->iocb.aio_nbytes = size;
29 file->iocb.aio_offset = offset;
30 #if (USE_AIO_KQUEUE)
31 file->iocb.aio_sigevent.sigev_notify = SIGEV_KEVENT;
32 file->iocb.aio_sigevent.sigev_notify_kqueue = tid->kq;
33 file->iocb.aio_sigevent.sigev_value = (union sigval) file;
34 #endif
35 #if (USE_AIO_SIGNAL)
36 file->iocb.aio_sigevent.sigev_notify = SIGEV_SIGNAL;
37 file->iocb.aio_sigevent.sigev_signo = NGX_SIGAIO;
38 #ifndef __FreeBSD__
39 file->iocb.aio_sigevent.sigev_value.sival_ptr = file;
40 #endif
41 #endif
42
43 if (aio_read(&file->iocb) == -1) {
44 ngx_log_error(NGX_LOG_ERR, file->log, ngx_errno,
45 "aio_read() failed");
46 return NGX_ERROR;
47
48 n = aio_error(&file->iocb);
49 if (n == EINPROGRESS)
50 return NGX_AGAIN;
51
52 if (n == -1) {
53 ngx_log_error(NGX_LOG_ERR, file->log, ngx_errno,
54 "aio_read() failed");
55 return NGX_ERROR;
56 }
57 }
58
59 ngx_assert(file->iocb.aio_buf == buf), return NGX_ERROR,
60 "ngx_aio_read_file: another buffer is passed");
61
62 n = aio_return(&file->iocb);
63 if (n == -1) {
64 ngx_log_error(NGX_LOG_ERR, file->log, ngx_errno,
65 "aio_read() failed");
66 return NGX_ERROR;
67 }
68
69 return n;
70 }
71
72 #endif