Document atomicity for read(2) and write(2).
Take part of the text from POSIX 2018 edition and describe the atomicity requirements for read and write syscalls. See p1003.1-2018, Vol.2, 2.9.7 Threads interaction with Regular File Operations. Reviewed by: asomers Sponsored by: The FreeBSD Foundation MFC after: 3 days Differential revision: https://reviews.freebsd.org/D20867
This commit is contained in:
parent
ec38f4f941
commit
8c95181495
@ -28,7 +28,7 @@
|
||||
.\" @(#)read.2 8.4 (Berkeley) 2/26/94
|
||||
.\" $FreeBSD$
|
||||
.\"
|
||||
.Dd December 1, 2017
|
||||
.Dd July 6, 2019
|
||||
.Dt READ 2
|
||||
.Os
|
||||
.Sh NAME
|
||||
@ -128,6 +128,25 @@ return the number of bytes actually read and placed in the buffer.
|
||||
The system guarantees to read the number of bytes requested if
|
||||
the descriptor references a normal file that has that many bytes left
|
||||
before the end-of-file, but in no other case.
|
||||
.Pp
|
||||
In accordance with
|
||||
.St -p1003.1-2004 ,
|
||||
both
|
||||
.Xr read 2
|
||||
and
|
||||
.Xr write 2
|
||||
syscalls are atomic with respect to each other in the effects on file
|
||||
content, when they operate on regular files.
|
||||
If two threads each call one of the
|
||||
.Xr read 2
|
||||
or
|
||||
.Xr write 2 ,
|
||||
syscalls, each call will see either all of the changes of the other call,
|
||||
or none of them.
|
||||
The
|
||||
.Fx
|
||||
kernel implements this guarantee by locking the file ranges affected by
|
||||
the calls.
|
||||
.Sh RETURN VALUES
|
||||
If successful, the
|
||||
number of bytes actually read is returned.
|
||||
|
Loading…
Reference in New Issue
Block a user