diff options
Diffstat (limited to 'libc/src/threads/call_once.cpp')
-rw-r--r-- | libc/src/threads/call_once.cpp | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/libc/src/threads/call_once.cpp b/libc/src/threads/call_once.cpp new file mode 100644 index 000000000000..67ab34509a4c --- /dev/null +++ b/libc/src/threads/call_once.cpp @@ -0,0 +1,23 @@ +//===-- Linux implementation of the call_once function --------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#include "src/threads/call_once.h" +#include "src/__support/common.h" +#include "src/__support/threads/callonce.h" + +#include <threads.h> // For once_flag and __call_once_func_t definitions. + +namespace __llvm_libc { + +LLVM_LIBC_FUNCTION(void, call_once, + (once_flag * flag, __call_once_func_t func)) { + callonce(reinterpret_cast<CallOnceFlag *>(flag), + reinterpret_cast<CallOnceCallback *>(func)); +} + +} // namespace __llvm_libc |