error.3: ATTRIBUTES: Note functions that are/aren't thread-safe

The markings match glibc markings.
markings of functions in glibc are:
- error:         MT-Safe locale
- error_at_line: MT-Unsafe race:error_at_line/error_one_per_line locale

Signed-off-by: Zeng Linggang <zenglg.jy@cn.fujitsu.com>
Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
This commit is contained in:
Zeng Linggang 2015-07-17 11:15:19 +08:00 committed by Michael Kerrisk
parent 087dd22bfd
commit b08ffceb33
1 changed files with 31 additions and 0 deletions

View File

@ -118,6 +118,37 @@ is assigned the address of a function
instead of prefixing the message with the program name and colon.
The function should print a suitable string to
.IR stderr .
.SH ATTRIBUTES
For an explanation of the terms used in this section, see
.BR attributes (7).
.TS
allbox;
lb lb lbw37
l l l.
Interface Attribute Value
T{
.BR error ()
T} Thread safety MT-Safe locale
T{
.BR error_at_line ()
T} Thread safety T{
MT-Unsafe race:error_at_line/error_one_per_line locale
T}
.TE
The internal
.I error_one_per_line
variable is accessed (without any form of synchronization, but since
it's an int used once, it should be safe enough) and, if
.I error_one_per_line
is set nonzero, the internal static variables(not exposed to users)
used to hold the last printed file name and line number are accessed
and modified without synchronization; the update is not atomic and it
occurs before disabling cancellation, so it can be interrupted after
only one of the two variables is modified. After that,
.BR error_at_line (3)
is very much like
.BR error (3).
.SH CONFORMING TO
These functions and variables are GNU extensions, and should not be
used in programs intended to be portable.