summaryrefslogtreecommitdiffstats
path: root/man3/unlocked_stdio.3
diff options
context:
space:
mode:
Diffstat (limited to 'man3/unlocked_stdio.3')
-rw-r--r--man3/unlocked_stdio.3203
1 files changed, 203 insertions, 0 deletions
diff --git a/man3/unlocked_stdio.3 b/man3/unlocked_stdio.3
new file mode 100644
index 0000000..a74e6b2
--- /dev/null
+++ b/man3/unlocked_stdio.3
@@ -0,0 +1,203 @@
+'\" t
+.\" Copyright (C) 2001 Andries Brouwer <aeb@cwi.nl>.
+.\"
+.\" SPDX-License-Identifier: Linux-man-pages-copyleft
+.\"
+.TH unlocked_stdio 3 2023-07-30 "Linux man-pages 6.05.01"
+.SH NAME
+getc_unlocked, getchar_unlocked, putc_unlocked,
+putchar_unlocked \- nonlocking stdio functions
+.SH LIBRARY
+Standard C library
+.RI ( libc ", " \-lc )
+.SH SYNOPSIS
+.nf
+.B #include <stdio.h>
+.PP
+.BI "int getc_unlocked(FILE *" stream );
+.B "int getchar_unlocked(void);"
+.BI "int putc_unlocked(int " c ", FILE *" stream );
+.BI "int putchar_unlocked(int " c );
+.PP
+.BI "void clearerr_unlocked(FILE *" stream );
+.BI "int feof_unlocked(FILE *" stream );
+.BI "int ferror_unlocked(FILE *" stream );
+.BI "int fileno_unlocked(FILE *" stream );
+.BI "int fflush_unlocked(FILE *_Nullable " stream );
+.PP
+.BI "int fgetc_unlocked(FILE *" stream );
+.BI "int fputc_unlocked(int " c ", FILE *" stream );
+.PP
+.BI "size_t fread_unlocked(void " ptr "[restrict ." size " * ." n ],
+.BI " size_t " size ", size_t " n ,
+.BI " FILE *restrict " stream );
+.BI "size_t fwrite_unlocked(const void " ptr "[restrict ." size " * ." n ],
+.BI " size_t " size ", size_t " n ,
+.BI " FILE *restrict " stream );
+.PP
+.BI "char *fgets_unlocked(char " s "[restrict ." n "], int " n \
+", FILE *restrict " stream );
+.BI "int fputs_unlocked(const char *restrict " s ", FILE *restrict " stream );
+.PP
+.B #include <wchar.h>
+.PP
+.BI "wint_t getwc_unlocked(FILE *" stream );
+.B "wint_t getwchar_unlocked(void);"
+.BI "wint_t fgetwc_unlocked(FILE *" stream );
+.PP
+.BI "wint_t fputwc_unlocked(wchar_t " wc ", FILE *" stream );
+.BI "wint_t putwc_unlocked(wchar_t " wc ", FILE *" stream );
+.BI "wint_t putwchar_unlocked(wchar_t " wc );
+.PP
+.BI "wchar_t *fgetws_unlocked(wchar_t " ws "[restrict ." n "], int " n ,
+.BI " FILE *restrict " stream );
+.BI "int fputws_unlocked(const wchar_t *restrict " ws ,
+.BI " FILE *restrict " stream );
+.fi
+.PP
+.RS -4
+Feature Test Macro Requirements for glibc (see
+.BR feature_test_macros (7)):
+.RE
+.PP
+.BR \%getc_unlocked (),
+.BR \%getchar_unlocked (),
+.BR \%putc_unlocked (),
+.BR \%putchar_unlocked ():
+.nf
+ /* glibc >= 2.24: */ _POSIX_C_SOURCE >= 199309L
+ || /* glibc <= 2.23: */ _POSIX_C_SOURCE
+ || /* glibc <= 2.19: */ _SVID_SOURCE || _BSD_SOURCE
+.fi
+.PP
+.BR \%clearerr_unlocked (),
+.BR \%feof_unlocked (),
+.BR \%ferror_unlocked (),
+.BR \%fileno_unlocked (),
+.BR \%fflush_unlocked (),
+.BR \%fgetc_unlocked (),
+.BR \%fputc_unlocked (),
+.BR \%fread_unlocked (),
+.BR \%fwrite_unlocked ():
+.nf
+ /* glibc >= 2.19: */ _DEFAULT_SOURCE
+ || /* glibc <= 2.19: */ _SVID_SOURCE || _BSD_SOURCE
+.fi
+.PP
+.BR \%fgets_unlocked (),
+.BR \%fputs_unlocked (),
+.BR \%getwc_unlocked (),
+.BR \%getwchar_unlocked (),
+.BR \%fgetwc_unlocked (),
+.BR \%fputwc_unlocked (),
+.BR \%putwchar_unlocked (),
+.BR \%fgetws_unlocked (),
+.BR \%fputws_unlocked ():
+.nf
+ _GNU_SOURCE
+.fi
+.SH DESCRIPTION
+Each of these functions has the same behavior as its counterpart
+without the "_unlocked" suffix, except that they do not use locking
+(they do not set locks themselves, and do not test for the presence
+of locks set by others) and hence are thread-unsafe.
+See
+.BR flockfile (3).
+.SH ATTRIBUTES
+For an explanation of the terms used in this section, see
+.BR attributes (7).
+.TS
+allbox;
+lb lb lbx
+l l l.
+Interface Attribute Value
+T{
+.na
+.nh
+.BR getc_unlocked (),
+.BR putc_unlocked (),
+.BR clearerr_unlocked (),
+.BR fflush_unlocked (),
+.BR fgetc_unlocked (),
+.BR fputc_unlocked (),
+.BR fread_unlocked (),
+.BR fwrite_unlocked (),
+.BR fgets_unlocked (),
+.BR fputs_unlocked (),
+.BR getwc_unlocked (),
+.BR fgetwc_unlocked (),
+.BR fputwc_unlocked (),
+.BR putwc_unlocked (),
+.BR fgetws_unlocked (),
+.BR fputws_unlocked ()
+T} Thread safety T{
+.na
+.nh
+MT-Safe race:stream
+T}
+T{
+.na
+.nh
+.BR getchar_unlocked (),
+.BR getwchar_unlocked ()
+T} Thread safety T{
+.na
+.nh
+MT-Unsafe race:stdin
+T}
+T{
+.na
+.nh
+.BR putchar_unlocked (),
+.BR putwchar_unlocked ()
+T} Thread safety T{
+.na
+.nh
+MT-Unsafe race:stdout
+T}
+T{
+.na
+.nh
+.BR feof_unlocked (),
+.BR ferror_unlocked (),
+.BR fileno_unlocked ()
+T} Thread safety MT-Safe
+.TE
+.sp 1
+.SH STANDARDS
+.TP
+.BR getc_unlocked ()
+.TQ
+.BR getchar_unlocked ()
+.TQ
+.BR putc_unlocked ()
+.TQ
+.BR putchar_unlocked ()
+POSIX.1-2008.
+.TP
+Others:
+None.
+.SH HISTORY
+.TP
+.BR getc_unlocked ()
+.TQ
+.BR getchar_unlocked ()
+.TQ
+.BR putc_unlocked ()
+.TQ
+.BR putchar_unlocked ()
+POSIX.1-2001.
+.\" E.g., in HP-UX 10.0. In HP-UX 10.30 they are called obsolescent, and
+.\" moved to a compatibility library.
+.\" Available in HP-UX 10.0: clearerr_unlocked, fclose_unlocked,
+.\" feof_unlocked, ferror_unlocked, fflush_unlocked, fgets_unlocked,
+.\" fgetwc_unlocked, fgetws_unlocked, fileno_unlocked, fputs_unlocked,
+.\" fputwc_unlocked, fputws_unlocked, fread_unlocked, fseek_unlocked,
+.\" ftell_unlocked, fwrite_unlocked, getc_unlocked, getchar_unlocked,
+.\" getw_unlocked, getwc_unlocked, getwchar_unlocked, putc_unlocked,
+.\" putchar_unlocked, puts_unlocked, putws_unlocked, putw_unlocked,
+.\" putwc_unlocked, putwchar_unlocked, rewind_unlocked, setvbuf_unlocked,
+.\" ungetc_unlocked, ungetwc_unlocked.
+.SH SEE ALSO
+.BR flockfile (3),
+.BR stdio (3)