mbrtowc.3: SYNOPSIS: Use 'restrict' in prototypes
[man-pages.git] / man3 / aio_read.3
blobc43c35729f5a28993a95963f5866b18538fe99da
1 .\" Copyright (c) 2003 Andries Brouwer (aeb@cwi.nl)
2 .\"
3 .\" %%%LICENSE_START(GPLv2+_DOC_FULL)
4 .\" This is free documentation; you can redistribute it and/or
5 .\" modify it under the terms of the GNU General Public License as
6 .\" published by the Free Software Foundation; either version 2 of
7 .\" the License, or (at your option) any later version.
8 .\"
9 .\" The GNU General Public License's references to "object code"
10 .\" and "executables" are to be interpreted as the output of any
11 .\" document formatting or typesetting system, including
12 .\" intermediate and printed output.
13 .\"
14 .\" This manual is distributed in the hope that it will be useful,
15 .\" but WITHOUT ANY WARRANTY; without even the implied warranty of
16 .\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17 .\" GNU General Public License for more details.
18 .\"
19 .\" You should have received a copy of the GNU General Public
20 .\" License along with this manual; if not, see
21 .\" <http://www.gnu.org/licenses/>.
22 .\" %%%LICENSE_END
23 .\"
24 .TH AIO_READ 3 2020-06-09  "" "Linux Programmer's Manual"
25 .SH NAME
26 aio_read \- asynchronous read
27 .SH SYNOPSIS
28 .nf
29 .B "#include <aio.h>"
30 .PP
31 .BI "int aio_read(struct aiocb *" aiocbp );
32 .PP
33 Link with \fI\-lrt\fP.
34 .fi
35 .SH DESCRIPTION
36 The
37 .BR aio_read ()
38 function queues the I/O request described by the buffer pointed to by
39 .IR aiocbp .
40 This function is the asynchronous analog of
41 .BR read (2).
42 The arguments of the call
43 .PP
44     read(fd, buf, count)
45 .PP
46 correspond (in order) to the fields
47 .IR aio_fildes ,
48 .IR aio_buf ,
49 and
50 .IR aio_nbytes
51 of the structure pointed to by
52 .IR aiocbp .
53 (See
54 .BR aio (7)
55 for a description of the
56 .I aiocb
57 structure.)
58 .PP
59 The data is read starting at the absolute position
60 .IR aiocbp\->aio_offset ,
61 regardless of the file offset.
62 After the call,
63 the value of the file offset is unspecified.
64 .PP
65 The "asynchronous" means that this call returns as soon as the
66 request has been enqueued; the read may or may not have completed
67 when the call returns.
68 One tests for completion using
69 .BR aio_error (3).
70 The return status of a completed I/O operation can be obtained by
71 .BR aio_return (3).
72 Asynchronous notification of I/O completion can be obtained by setting
73 .IR aiocbp\->aio_sigevent
74 appropriately; see
75 .BR sigevent (7)
76 for details.
77 .PP
79 .B _POSIX_PRIORITIZED_IO
80 is defined, and this file supports it,
81 then the asynchronous operation is submitted at a priority equal
82 to that of the calling process minus
83 .IR aiocbp\->aio_reqprio .
84 .PP
85 The field
86 .I aiocbp\->aio_lio_opcode
87 is ignored.
88 .PP
89 No data is read from a regular file beyond its maximum offset.
90 .SH RETURN VALUE
91 On success, 0 is returned.
92 On error, the request is not enqueued, \-1
93 is returned, and
94 .I errno
95 is set to indicate the error.
96 If an error is detected only later, it will
97 be reported via
98 .BR aio_return (3)
99 (returns status \-1) and
100 .BR aio_error (3)
101 (error status\(emwhatever one would have gotten in
102 .IR errno ,
103 such as
104 .BR EBADF ).
105 .SH ERRORS
107 .B EAGAIN
108 Out of resources.
110 .B EBADF
111 .I aio_fildes
112 is not a valid file descriptor open for reading.
114 .B EINVAL
115 One or more of
116 .IR aio_offset ,
117 .IR aio_reqprio ,
119 .I aio_nbytes
120 are invalid.
122 .B ENOSYS
123 .BR aio_read ()
124 is not implemented.
126 .B EOVERFLOW
127 The file is a regular file, we start reading before end-of-file
128 and want at least one byte, but the starting position is past
129 the maximum offset for this file.
130 .SH VERSIONS
132 .BR aio_read ()
133 function is available since glibc 2.1.
134 .SH ATTRIBUTES
135 For an explanation of the terms used in this section, see
136 .BR attributes (7).
137 .ad l
140 allbox;
141 lbx lb lb
142 l l l.
143 Interface       Attribute       Value
145 .BR aio_read ()
146 T}      Thread safety   MT-Safe
150 .sp 1
151 .SH CONFORMING TO
152 POSIX.1-2001, POSIX.1-2008.
153 .SH NOTES
154 It is a good idea to zero out the control block before use.
155 The control block must not be changed while the read operation
156 is in progress.
157 The buffer area being read into
158 .\" or the control block of the operation
159 must not be accessed during the operation or undefined results may occur.
160 The memory areas involved must remain valid.
162 Simultaneous I/O operations specifying the same
163 .I aiocb
164 structure produce undefined results.
165 .SH EXAMPLES
167 .BR aio (7).
168 .SH SEE ALSO
169 .BR aio_cancel (3),
170 .BR aio_error (3),
171 .BR aio_fsync (3),
172 .BR aio_return (3),
173 .BR aio_suspend (3),
174 .BR aio_write (3),
175 .BR lio_listio (3),
176 .BR aio (7)