Mercurial > hg > nginx
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 |