mirror of
git://sourceware.org/git/glibc.git
synced 2024-11-27 03:41:23 +08:00
misc: Add support for Linux uio.h RWF_ATOMIC flag
Linux 6.11 adds the new flag for pwritev2 (commit c34fc6f26ab86d03a2d47446f42b6cd492dfdc56). Checked on x86_64-linux-gnu on 6.11 kernel. Reviewed-by: H.J. Lu <hjl.tools@gmail.com>
This commit is contained in:
parent
fc650bfd71
commit
5ffc903216
@ -1381,6 +1381,19 @@ Per-IO synchronization as if the file was opened with @code{O_APPEND} flag.
|
|||||||
@item RWF_NOAPPEND
|
@item RWF_NOAPPEND
|
||||||
This flag allows an offset to be honored, even if the file was opened with
|
This flag allows an offset to be honored, even if the file was opened with
|
||||||
@code{O_APPEND} flag.
|
@code{O_APPEND} flag.
|
||||||
|
|
||||||
|
@item RWF_ATOMIC
|
||||||
|
Indicate that the write is to be issued with torn-write prevention. The
|
||||||
|
input buffer should follow some contraints: the total length should be
|
||||||
|
power-of-2 in size and also sizes between @code{atomic_write_unit_min}
|
||||||
|
and @code{atomic_write_unit_max}, the @code{struct iovec} count should be
|
||||||
|
up to @code{atomic_write_segments_max}, and the offset should be
|
||||||
|
naturally-aligned with regard to total write length.
|
||||||
|
|
||||||
|
The @code{atomic_*} values can be obtained with @code{statx} along with
|
||||||
|
@code{STATX_WRITE_ATOMIC} flag.
|
||||||
|
|
||||||
|
This is a Linux-specific extension.
|
||||||
@end vtable
|
@end vtable
|
||||||
|
|
||||||
When the source file is compiled with @code{_FILE_OFFSET_BITS == 64} the
|
When the source file is compiled with @code{_FILE_OFFSET_BITS == 64} the
|
||||||
|
@ -37,8 +37,11 @@
|
|||||||
#ifndef RWF_NOAPPEND
|
#ifndef RWF_NOAPPEND
|
||||||
# define RWF_NOAPPEND 0
|
# define RWF_NOAPPEND 0
|
||||||
#endif
|
#endif
|
||||||
|
#ifndef RWF_ATOMIC
|
||||||
|
# define RWF_ATOMIC 0
|
||||||
|
#endif
|
||||||
#define RWF_SUPPORTED (RWF_HIPRI | RWF_DSYNC | RWF_SYNC | RWF_NOWAIT \
|
#define RWF_SUPPORTED (RWF_HIPRI | RWF_DSYNC | RWF_SYNC | RWF_NOWAIT \
|
||||||
| RWF_APPEND | RWF_NOAPPEND)
|
| RWF_APPEND | RWF_NOAPPEND | RWF_ATOMIC)
|
||||||
|
|
||||||
/* Generic uio_lim.h does not define IOV_MAX. */
|
/* Generic uio_lim.h does not define IOV_MAX. */
|
||||||
#ifndef IOV_MAX
|
#ifndef IOV_MAX
|
||||||
|
@ -48,6 +48,8 @@ extern ssize_t process_vm_writev (pid_t __pid, const struct iovec *__lvec,
|
|||||||
#define RWF_NOWAIT 0x00000008 /* per-IO nonblocking mode. */
|
#define RWF_NOWAIT 0x00000008 /* per-IO nonblocking mode. */
|
||||||
#define RWF_APPEND 0x00000010 /* per-IO O_APPEND. */
|
#define RWF_APPEND 0x00000010 /* per-IO O_APPEND. */
|
||||||
#define RWF_NOAPPEND 0x00000020 /* per-IO negation of O_APPEND */
|
#define RWF_NOAPPEND 0x00000020 /* per-IO negation of O_APPEND */
|
||||||
|
#define RWF_ATOMIC 0x00000040 /* Write is to be issued with torn-write
|
||||||
|
prevention. */
|
||||||
|
|
||||||
__END_DECLS
|
__END_DECLS
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user