diff options
Diffstat (limited to 'libc/src/time')
| -rw-r--r-- | libc/src/time/darwin/CMakeLists.txt | 10 | ||||
| -rw-r--r-- | libc/src/time/darwin/clock_gettime.cpp | 28 |
2 files changed, 38 insertions, 0 deletions
diff --git a/libc/src/time/darwin/CMakeLists.txt b/libc/src/time/darwin/CMakeLists.txt new file mode 100644 index 0000000..6d68086 --- /dev/null +++ b/libc/src/time/darwin/CMakeLists.txt @@ -0,0 +1,10 @@ +add_entrypoint_object( + clock_gettime + SRCS + clock_gettime.cpp + HDRS + # The public header is part of the parent directory's library. + DEPENDS + libc.src.__support.time.clock_gettime + libc.src.errno.errno +) diff --git a/libc/src/time/darwin/clock_gettime.cpp b/libc/src/time/darwin/clock_gettime.cpp new file mode 100644 index 0000000..ecf116b --- /dev/null +++ b/libc/src/time/darwin/clock_gettime.cpp @@ -0,0 +1,28 @@ +//===---- Darwin implementation of the POSIX clock_gettime 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/time/clock_gettime.h" + +#include "src/__support/common.h" +#include "src/__support/libc_errno.h" +#include "src/__support/macros/config.h" +#include "src/__support/time/clock_gettime.h" + +namespace LIBC_NAMESPACE_DECL { + +LLVM_LIBC_FUNCTION(int, clock_gettime, + (clockid_t clockid, struct timespec *ts)) { + auto result = internal::clock_gettime(clockid, ts); + if (!result.has_value()) { + libc_errno = result.error(); + return -1; + } + return 0; +} + +} // namespace LIBC_NAMESPACE_DECL |
