diff options
author | Pablo Galindo <Pablogsal@gmail.com> | 2018-05-30 23:00:04 (GMT) |
---|---|---|
committer | Victor Stinner <vstinner@redhat.com> | 2018-05-30 23:00:04 (GMT) |
commit | 02e2a085dc1740b1cbf4ba2ed77335c84ce8a367 (patch) | |
tree | dc9f7b61caf1fc5c1192cbe1d31c9e5d6dacd1f6 /Doc/library/os.rst | |
parent | 495e567a2b3bbe3b99f0c253edf12997a9ff4ee1 (diff) | |
download | cpython-02e2a085dc1740b1cbf4ba2ed77335c84ce8a367.zip cpython-02e2a085dc1740b1cbf4ba2ed77335c84ce8a367.tar.gz cpython-02e2a085dc1740b1cbf4ba2ed77335c84ce8a367.tar.bz2 |
bpo-31368: Enhance os.preadv() documentation (GH-7254)
Diffstat (limited to 'Doc/library/os.rst')
-rw-r--r-- | Doc/library/os.rst | 209 |
1 files changed, 114 insertions, 95 deletions
diff --git a/Doc/library/os.rst b/Doc/library/os.rst index d5bc612..c64f932 100644 --- a/Doc/library/os.rst +++ b/Doc/library/os.rst @@ -1082,20 +1082,81 @@ or `the MSDN <https://msdn.microsoft.com/en-us/library/z0kc8e3z.aspx>`_ on Windo .. versionadded:: 3.3 -.. function:: pread(fd, buffersize, offset) +.. function:: pread(fd, n, offset) - Read from a file descriptor, *fd*, at a position of *offset*. It will read up - to *buffersize* number of bytes. The file offset remains unchanged. + Read at most *n* bytes from file descriptor *fd* at a position of *offset*, + leaving the file offset unchanged. + + Return a bytestring containing the bytes read. If the end of the file + referred to by *fd* has been reached, an empty bytes object is returned. Availability: Unix. .. versionadded:: 3.3 +.. function:: preadv(fd, buffers, offset, flags=0) + + Read from a file descriptor *fd* at a position of *offset* into mutable + :term:`bytes-like objects <bytes-like object>` *buffers*, leaving the file + offset unchanged. Transfer data into each buffer until it is full and then + move on to the next buffer in the sequence to hold the rest of the data. + + The flags argument contains a bitwise OR of zero or more of the following + flags: + + - :data:`RWF_HIPRI` + - :data:`RWF_NOWAIT` + + Return the total number of bytes actually read which can be less than the + total capacity of all the objects. + + The operating system may set a limit (:func:`sysconf` value + ``'SC_IOV_MAX'``) on the number of buffers that can be used. + + Combine the functionality of :func:`os.readv` and :func:`os.pread`. + + Availability: Linux 2.6.30 and newer, FreeBSD 6.0 and newer, + OpenBSD 2.7 and newer. Using flags requires Linux 4.6 or newer. + + .. versionadded:: 3.7 + + +.. data:: RWF_NOWAIT + + Do not wait for data which is not immediately available. If this flag is + specified, the system call will return instantly if it would have to read + data from the backing storage or wait for a lock. + + If some data was successfully read, it will return the number of bytes read. + If no bytes were read, it will return ``-1`` and set errno to + :data:`errno.EAGAIN`. + + Availability: Linux 4.14 and newer. + + .. versionadded:: 3.7 + + +.. data:: RWF_HIPRI + + High priority read/write. Allows block-based filesystems to use polling + of the device, which provides lower latency, but may use additional + resources. + + Currently, on Linux, this feature is usable only on a file descriptor opened + using the :data:`O_DIRECT` flag. + + Availability: Linux 4.6 and newer. + + .. versionadded:: 3.7 + + .. function:: pwrite(fd, str, offset) - Write *bytestring* to a file descriptor, *fd*, from *offset*, - leaving the file offset unchanged. + Write the bytestring in *str* to file descriptor *fd* at position of + *offset*, leaving the file offset unchanged. + + Return the number of bytes actually written. Availability: Unix. @@ -1104,54 +1165,57 @@ or `the MSDN <https://msdn.microsoft.com/en-us/library/z0kc8e3z.aspx>`_ on Windo .. function:: pwritev(fd, buffers, offset, flags=0) - Combines the functionality of :func:`os.writev` and :func:`os.pwrite`. It - writes the contents of *buffers* to file descriptor *fd* at offset *offset*. - *buffers* must be a sequence of :term:`bytes-like objects <bytes-like object>`. - Buffers are processed in array order. Entire contents of first buffer is written - before proceeding to second, and so on. The operating system may set a limit - (sysconf() value SC_IOV_MAX) on the number of buffers that can be used. - :func:`~os.pwritev` writes the contents of each object to the file descriptor - and returns the total number of bytes written. + Write the *buffers* contents to file descriptor *fd* at a offset *offset*, + leaving the file offset unchanged. *buffers* must be a sequence of + :term:`bytes-like objects <bytes-like object>`. Buffers are processed in + array order. Entire contents of the first buffer is written before + proceeding to the second, and so on. - The *flags* argument contains a bitwise OR of zero or more of the following + The flags argument contains a bitwise OR of zero or more of the following flags: - - RWF_DSYNC - - RWF_SYNC + - :data:`RWF_DSYNC` + - :data:`RWF_SYNC` - Using non-zero flags requires Linux 4.7 or newer. + Return the total number of bytes actually written. - Availability: Linux (version 2.6.30), FreeBSD 6.0 and newer, - OpenBSD (version 2.7 and newer). + The operating system may set a limit (:func:`sysconf` value + ``'SC_IOV_MAX'``) on the number of buffers that can be used. + + Combine the functionality of :func:`os.writev` and :func:`os.pwrite`. + + Availability: Linux 2.6.30 and newer, FreeBSD 6.0 and newer, + OpenBSD 2.7 and newer. Using flags requires Linux 4.7 or newer. .. versionadded:: 3.7 + .. data:: RWF_DSYNC - Provide a per-write equivalent of the O_DSYNC open(2) flag. This flag - is meaningful only for pwritev2(), and its effect applies only to the - data range written by the system call. + Provide a per-write equivalent of the :data:`O_DSYNC` ``open(2)`` flag. This + flag effect applies only to the data range written by the system call. - Availability: Linux (version 4.7). + Availability: Linux 4.7 and newer. .. versionadded:: 3.7 + .. data:: RWF_SYNC - Provide a per-write equivalent of the O_SYNC open(2) flag. This flag is - meaningful only for pwritev2(), and its effect applies only to the data - range written by the system call. + Provide a per-write equivalent of the :data:`O_SYNC` ``open(2)`` flag. This + flag effect applies only to the data range written by the system call. - Availability: Linux (version 4.7). + Availability: Linux 4.7 and newer. .. versionadded:: 3.7 .. function:: read(fd, n) - Read at most *n* bytes from file descriptor *fd*. Return a bytestring containing the - bytes read. If the end of the file referred to by *fd* has been reached, an - empty bytes object is returned. + Read at most *n* bytes from file descriptor *fd*. + + Return a bytestring containing the bytes read. If the end of the file + referred to by *fd* has been reached, an empty bytes object is returned. .. note:: @@ -1230,66 +1294,19 @@ or `the MSDN <https://msdn.microsoft.com/en-us/library/z0kc8e3z.aspx>`_ on Windo .. function:: readv(fd, buffers) Read from a file descriptor *fd* into a number of mutable :term:`bytes-like - objects <bytes-like object>` *buffers*. :func:`~os.readv` will transfer data - into each buffer until it is full and then move on to the next buffer in the - sequence to hold the rest of the data. :func:`~os.readv` returns the total - number of bytes read (which may be less than the total capacity of all the - objects). + objects <bytes-like object>` *buffers*. Transfer data into each buffer until + it is full and then move on to the next buffer in the sequence to hold the + rest of the data. - Availability: Unix. - - .. versionadded:: 3.3 + Return the total number of bytes actually read which can be less than the + total capacity of all the objects. + The operating system may set a limit (:func:`sysconf` value + ``'SC_IOV_MAX'``) on the number of buffers that can be used. -.. function:: preadv(fd, buffers, offset, flags=0) - - Combines the functionality of :func:`os.readv` and :func:`os.pread`. It - reads from a file descriptor *fd* into a number of mutable :term:`bytes-like - objects <bytes-like object>` *buffers*. As :func:`os.readv`, it will transfer - data into each buffer until it is full and then move on to the next buffer in - the sequence to hold the rest of the data. Its fourth argument, *offset*, - specifies the file offset at which the input operation is to be performed. - :func:`~os.preadv` return the total number of bytes read (which can be less than - the total capacity of all the objects). - - The flags argument contains a bitwise OR of zero or more of the following - flags: - - - RWF_HIPRI - - RWF_NOWAIT - - Using non-zero flags requires Linux 4.6 or newer. - - Availability: Linux (version 2.6.30), FreeBSD 6.0 and newer, - OpenBSD (version 2.7 and newer). - - .. versionadded:: 3.7 - - -.. data:: RWF_HIPRI - - High priority read/write. Allows block-based filesystems to use polling - of the device, which provides lower latency, but may use additional - resources. (Currently, this feature is usable only on a file descriptor - opened using the O_DIRECT flag.) - - Availability: Linux (version 4.6). - - .. versionadded:: 3.7 - - -.. data:: RWF_NOWAIT - - Do not wait for data which is not immediately available. If this flag - is specified, the preadv2() system call will return instantly - if it would have to read data from the backing storage or wait for a lock. - If some data was successfully read, it will return the number of bytes - read. If no bytes were read, it will return -1 and set errno to EAGAIN. - Currently, this flag is meaningful only for preadv2(). - - Availability: Linux (version 4.14). + Availability: Unix. - .. versionadded:: 3.7 + .. versionadded:: 3.3 .. function:: tcgetpgrp(fd) @@ -1319,8 +1336,9 @@ or `the MSDN <https://msdn.microsoft.com/en-us/library/z0kc8e3z.aspx>`_ on Windo .. function:: write(fd, str) - Write the bytestring in *str* to file descriptor *fd*. Return the number of - bytes actually written. + Write the bytestring in *str* to file descriptor *fd*. + + Return the number of bytes actually written. .. note:: @@ -1338,14 +1356,15 @@ or `the MSDN <https://msdn.microsoft.com/en-us/library/z0kc8e3z.aspx>`_ on Windo .. function:: writev(fd, buffers) - Write the contents of *buffers* to file descriptor *fd*. *buffers* must be a - sequence of :term:`bytes-like objects <bytes-like object>`. Buffers are - processed in array order. Entire contents of first buffer is written before - proceeding to second, and so on. The operating system may set a limit - (sysconf() value SC_IOV_MAX) on the number of buffers that can be used. + Write the contents of *buffers* to file descriptor *fd*. *buffers* must be + a sequence of :term:`bytes-like objects <bytes-like object>`. Buffers are + processed in array order. Entire contents of the first buffer is written + before proceeding to the second, and so on. + + Returns the total number of bytes actually written. - :func:`~os.writev` writes the contents of each object to the file descriptor - and returns the total number of bytes written. + The operating system may set a limit (:func:`sysconf` value + ``'SC_IOV_MAX'``) on the number of buffers that can be used. Availability: Unix. |