aboutsummaryrefslogtreecommitdiff
path: root/manual/llio.texi
diff options
context:
space:
mode:
Diffstat (limited to 'manual/llio.texi')
-rw-r--r--manual/llio.texi84
1 files changed, 41 insertions, 43 deletions
diff --git a/manual/llio.texi b/manual/llio.texi
index 6180a060fb..e0b16716ab 100644
--- a/manual/llio.texi
+++ b/manual/llio.texi
@@ -166,9 +166,6 @@ which can be used to access the file named by @var{filename}. The only
the difference is that on 32 bits systems the file is opened in the
large file mode. I.e., file length and file offsets can exceed 31 bits.
-To use this file descriptor one must not use the normal operations but
-instead the counterparts named @code{*64}, e.g., @code{read64}.
-
When the sources are translated with @code{_FILE_OFFSET_BITS == 64} this
function is actually available under the name @code{open}. I.e., the
new, extended API using 64 bit file sizes and offsets transparently
@@ -300,7 +297,7 @@ by the user to perform this operation.
When the source file is compiled with @code{_FILE_OFFSET_BITS == 64} the
@code{truncate} function is in fact @code{truncate64} and the type
@code{off_t} has 64 bits which makes it possible to handle files up to
-@math{2^63} bytes.
+@math{2^63} bytes in length.
The return value is zero is everything went ok. Otherwise the return
value is @math{-1} and the global variable @var{errno} is set to:
@@ -326,11 +323,11 @@ it is only of marginally additional utility. See below.
@comment Unix98
@deftypefun int truncate64 (const char *@var{name}, off64_t @var{length})
This function is similar to the @code{truncate} function. The
-difference is that the @var{length} argument is even on 32 bits machines
-64 bits wide which allows to handle file with a size up to @math{2^63}
+difference is that the @var{length} argument is 64 bits wide even on 32
+bits machines which allows to handle file with a size up to @math{2^63}
bytes.
-When the sources are defined using @code{_FILE_OFFSET_BITS == 64} on a
+When the source file is compiled with @code{_FILE_OFFSET_BITS == 64} on a
32 bits machine this function is actually available under the name
@code{truncate} and so transparently replaces the 32 bits interface.
@end deftypefun
@@ -355,7 +352,7 @@ memory segments if these are implemented by the system.
When the source file is compiled with @code{_FILE_OFFSET_BITS == 64} the
@code{ftruncate} function is in fact @code{ftruncate64} and the type
@code{off_t} has 64 bits which makes it possible to handle files up to
-@math{2^63} bytes.
+@math{2^63} bytes in length.
On success the function returns zero. Otherwise it returns @math{-1}
and set @var{errno} to one of these values:
@@ -373,11 +370,11 @@ The file is on a read-only file system.
@comment Unix98
@deftypefun int ftruncate64 (int @var{id}, off64_t @var{length})
This function is similar to the @code{ftruncate} function. The
-difference is that the @var{length} argument is even on 32 bits machines
-64 bits wide which allows to handle file with a size up to @math{2^63}
+difference is that the @var{length} argument is 64 bits wide even on 32
+bits machines which allows to handle file with a size up to @math{2^63}
bytes.
-When the sources are defined using @code{_FILE_OFFSET_BITS == 64} on a
+When the source file is compiled with @code{_FILE_OFFSET_BITS == 64} on a
32 bits machine this function is actually available under the name
@code{ftruncate} and so transparently replaces the 32 bits interface.
@end deftypefun
@@ -506,7 +503,7 @@ not effected by the operation. The value is the same as before the call.
When the source file is compiled with @code{_FILE_OFFSET_BITS == 64} the
@code{pread} function is in fact @code{pread64} and the type
@code{off_t} has 64 bits which makes it possible to handle files up to
-@math{2^63} bytes.
+@math{2^63} bytes in length.
The return value of @code{pread} describes the number of bytes read.
In the error case it returns @math{-1} like @code{read} does and the
@@ -530,12 +527,12 @@ version 2.
This function is similar to the @code{pread} function. The difference
is that the @var{offset} parameter is of type @code{off64_t} instead of
@code{off_t} which makes it possible on 32 bits machines to address
-files larger then @math{2^31} bytes and up to @math{2^63} bytes. The
+files larger than @math{2^31} bytes and up to @math{2^63} bytes. The
file descriptor @code{filedes} must be opened using @code{open64} since
otherwise the large offsets possible with @code{off64_t} will lead to
errors with a descriptor in small file mode.
-When the sources are defined using @code{_FILE_OFFSET_BITS == 64} on a
+When the source file is compiled with @code{_FILE_OFFSET_BITS == 64} on a
32 bits machine this function is actually available under the name
@code{pread} and so transparently replaces the 32 bits interface.
@end deftypefun
@@ -662,7 +659,7 @@ not effected by the operation. The value is the same as before the call.
When the source file is compiled with @code{_FILE_OFFSET_BITS == 64} the
@code{pwrite} function is in fact @code{pwrite64} and the type
@code{off_t} has 64 bits which makes it possible to handle files up to
-@math{2^63} bytes.
+@math{2^63} bytes in length.
The return value of @code{pwrite} describes the number of written bytes.
In the error case it returns @math{-1} like @code{write} does and the
@@ -686,12 +683,12 @@ version 2.
This function is similar to the @code{pwrite} function. The difference
is that the @var{offset} parameter is of type @code{off64_t} instead of
@code{off_t} which makes it possible on 32 bits machines to address
-files larger then @math{2^31} bytes and up to @math{2^63} bytes. The
+files larger than @math{2^31} bytes and up to @math{2^63} bytes. The
file descriptor @code{filedes} must be opened using @code{open64} since
otherwise the large offsets possible with @code{off64_t} will lead to
errors with a descriptor in small file mode.
-When the sources are defined using @code{_FILE_OFFSET_BITS == 64} on a
+When the source file is compiled using @code{_FILE_OFFSET_BITS == 64} on a
32 bits machine this function is actually available under the name
@code{pwrite} and so transparently replaces the 32 bits interface.
@end deftypefun
@@ -784,7 +781,7 @@ only for pipes and FIFOs, but in the GNU system, you always get
When the source file is compiled with @code{_FILE_OFFSET_BITS == 64} the
@code{lseek} function is in fact @code{lseek64} and the type
@code{off_t} has 64 bits which makes it possible to handle files up to
-@math{2^63} bytes.
+@math{2^63} bytes in length.
This function is a cancelation point in multi-threaded programs. This
is a problem if the thread allocates some resources (like memory, file
@@ -806,12 +803,12 @@ descriptors.
This function is similar to the @code{lseek} function. The difference
is that the @var{offset} parameter is of type @code{off64_t} instead of
@code{off_t} which makes it possible on 32 bits machines to address
-files larger then @math{2^31} bytes and up to @math{2^63} bytes. The
+files larger than @math{2^31} bytes and up to @math{2^63} bytes. The
file descriptor @code{filedes} must be opened using @code{open64} since
otherwise the large offsets possible with @code{off64_t} will lead to
errors with a descriptor in small file mode.
-When the sources are defined using @code{_FILE_OFFSET_BITS == 64} on a
+When the source file is compiled with @code{_FILE_OFFSET_BITS == 64} on a
32 bits machine this function is actually available under the name
@code{lseek} and so transparently replaces the 32 bits interface.
@end deftypefun
@@ -877,7 +874,7 @@ is transparently replaced by @code{off64_t}.
@comment Unix98
@deftp {Data Type} off64_t
This type is used similar to @code{off_t}. The difference is that even
-on 32 bits machines, where the @code{off_t} type would 32 bits,
+on 32 bits machines, where the @code{off_t} type would have 32 bits,
@code{off64_t} has 64 bits and so is able to address files up to
@math{2^63} bytes in length.
@@ -1396,18 +1393,18 @@ No synchronization is possible since the system does not implement this.
The POSIX.1b standard defines a new set of I/O operations which can
reduce the time an application spends waiting at I/O significantly. The
new functions allow a program to initiate one or more I/O operations and
-then immediately resume the normal word while the I/O operations are
+then immediately resume the normal work while the I/O operations are
executed in parallel. The functionality is available if the
@file{unistd.h} file defines the symbol @code{_POSIX_ASYNCHRONOUS_IO}.
These functions are part of the library with realtime functions named
@file{librt}. They are not actually part of the @file{libc} binary.
The implementation of these functions can be done using support in the
-kernel )if available) or using a implementation based on threads at
-userlevel. In the later case it might be necessary to link applications
-linked with @file{librt} also with the thread library @file{libthread}.
+kernel (if available) or using an implementation based on threads at
+userlevel. In the latter case it might be necessary to link applications
+with the thread library @file{libthread} in addition to @file{librt}.
-All AIO operations operate on files which previously were opened. There
+All AIO operations operate on files which were opened previously. There
might be arbitrary many operations for one file running. The
asynchronous I/O operations are controlled using a data structure named
@code{struct aiocb} (@dfn{AIO control block}). It is defined in
@@ -1440,14 +1437,14 @@ descriptor.
@item volatile void *aio_buf
This is a pointer to the buffer with the data to be written or the place
-where the ead data is stored.
+where the read data is stored.
@item size_t aio_nbytes
This element specifies the length of the buffer pointed to by @code{aio_buf}.
@item int aio_reqprio
-If for the platform @code{_POSIX_PRIORITIZED_IO} and
-@code{_POSIX_PRIORITY_SCHEDULING} is defined the AIO requests are
+If the platform has defined @code{_POSIX_PRIORITIZED_IO} and
+@code{_POSIX_PRIORITY_SCHEDULING} the AIO requests are
processed based on the current scheduling priority. The
@code{aio_reqprio} element can then be used to lower the priority of the
AIO operation.
@@ -1458,13 +1455,13 @@ operation terminated. If the @code{sigev_notify} element is
@code{SIGEV_NONE} no notification is send. If it is @code{SIGEV_SIGNAL}
the signal determined by @code{sigev_signo} is send. Otherwise
@code{sigev_notify} must be @code{SIGEV_THREAD} in which case a thread
-which starts executing the function pointeed to by
+is created which starts executing the function pointed to by
@code{sigev_notify_function}.
@item int aio_lio_opcode
This element is only used by the @code{lio_listio} and
-@code{[lio_listio64} functions. Since these functions allow to start an
-arbitrary number of operations at once and since each operationcan be
+@code{lio_listio64} functions. Since these functions allow to start an
+arbitrary number of operations at once and since each operation can be
input or output (or nothing) the information must be stored in the
control block. The possible values are:
@@ -1568,14 +1565,13 @@ aiocb64} since the LFS replaces transparently the old interface.
@comment POSIX.1b
@deftypefun int aio_read (struct aiocb *@var{aiocbp})
This function initiates an asynchronous read operation. The function
-call immediately returns after the operation was enqueued or if before
-this happens an error was encoutered.
+call immediately returns after the operation was enqueued or when an
+error was encoutered.
The first @code{aiocbp->aio_nbytes} bytes of the file for which
-@code{aiocbp->aio_fildes} is an descriptor are written to the buffer
-starting at @code{aiocbp->aio_buf}. @code{aiocbp->aio_fildes} is an
-descriptor. Reading starts at the absolute position
-@code{aiocbp->aio_offset} in the file.
+@code{aiocbp->aio_fildes} is a descriptor are written to the buffer
+starting at @code{aiocbp->aio_buf}. Reading starts at the absolute
+position @code{aiocbp->aio_offset} in the file.
If prioritized I/O is supported by the platform the
@code{aiocbp->aio_reqprio} value is used to adjust the priority before
@@ -1607,7 +1603,7 @@ request and so this error might also be signaled asynchrously.
In the case @code{aio_read} returns zero the current status of the
request can be queried using @code{aio_error} and @code{aio_return}
-questions. As long as the value returned by @code{aio_error} is
+functions. As long as the value returned by @code{aio_error} is
@code{EINPROGRESS} the operation has not yet completed. If
@code{aio_error} returns zero the operation successfully terminated,
otherwise the value is to be interpreted as an error code. If the
@@ -1635,7 +1631,7 @@ replaces the normal implementation.
@comment Unix98
@deftypefun int aio_read64 (struct aiocb *@var{aiocbp})
This function is similar to the @code{aio_read} function. The only
-difference is that only @w{32 bits} machines the file descriptor should
+difference is that on @w{32 bits} machines the file descriptor should
be opened in the large file mode. Internally @code{aio_read64} uses
functionality equivalent to @code{lseek64} (@pxref{File Position
Primitive}) to position the file descriptor correctly for the reading,
@@ -1691,7 +1687,7 @@ request and so this error might also be signaled asynchrously.
In the case @code{aio_write} returns zero the current status of the
request can be queried using @code{aio_error} and @code{aio_return}
-questions. As long as the value returned by @code{aio_error} is
+functions. As long as the value returned by @code{aio_error} is
@code{EINPROGRESS} the operation has not yet completed. If
@code{aio_error} returns zero the operation successfully terminated,
otherwise the value is to be interpreted as an error code. If the
@@ -2159,7 +2155,7 @@ function.
This member specifies the maximal number of threads which must be used
at any one time.
@item int aio_num
-This number provides an esitmate on the maximal number of simultaneously
+This number provides an estimate on the maximal number of simultaneously
enqueued requests.
@item int aio_locks
@c What?
@@ -2186,7 +2182,9 @@ type @code{struct aioinit} must be initialized. Then a reference to
this variable is passed as the parameter to @code{aio_init} which itself
may or may not pay attention to the hints.
-The function has no return value and no error cases are defined.
+The function has no return value and no error cases are defined. It is
+a extension which follows a proposal from the SGI implementation in
+@w{Irix 6}. It is not covered by POSIX.1b or Unix98.
@end deftypefun
@node Control Operations