summaryrefslogtreecommitdiffstats
path: root/man/man3/pthread_once.3
diff options
context:
space:
mode:
Diffstat (limited to 'man/man3/pthread_once.3')
-rw-r--r--man/man3/pthread_once.344
1 files changed, 44 insertions, 0 deletions
diff --git a/man/man3/pthread_once.3 b/man/man3/pthread_once.3
new file mode 100644
index 000000000..17d25360f
--- /dev/null
+++ b/man/man3/pthread_once.3
@@ -0,0 +1,44 @@
+.\" Copyright, Xavier Leroy <Xavier.Leroy@inria.fr>
+.\" Copyright 2023, Alejandro Colomar <alx@kernel.org>
+.\"
+.\" SPDX-License-Identifier: Linux-man-pages-copyleft
+.\"
+.TH pthread_once 3 (date) "Linux man-pages (unreleased)"
+.
+.
+.SH NAME
+pthread_once
+\-
+once-only initialization
+.
+.
+.SH SYNOPSIS
+.B #include <pthread.h>
+.P
+.BI "pthread_once_t " once_control " = PTHREAD_ONCE_INIT;"
+.P
+.BI "int pthread_once(pthread_once_t *" once_control ", void (*" init_routine ") (void));"
+.
+.
+.SH DESCRIPTION
+The purpose of \fBpthread_once\fP is
+to ensure that a piece of initialization code is executed at most once.
+The \fIonce_control\fP argument points to a static or extern variable
+statically initialized to \fBPTHREAD_ONCE_INIT\fP.
+.P
+The first time \fBpthread_once\fP is called
+with a given \fIonce_control\fP argument,
+it calls \fIinit_routine\fP with no argument
+and changes the value of the \fIonce_control\fP variable
+to record that initialization has been performed.
+Subsequent calls to \fBpthread_once\fP
+with the same \fBonce_control\fP argument
+do nothing.
+.
+.
+.SH "RETURN VALUE"
+\fBpthread_once\fP always returns 0.
+.
+.
+.SH ERRORS
+None.