[libc-commits] [libc] [libc] Assorted improvements to [gs]etitimer (PR #206974)
Pavel Labath via libc-commits
libc-commits at lists.llvm.org
Mon Jul 6 03:11:11 PDT 2026
================
@@ -0,0 +1,55 @@
+//===-- Implementation header for getitimer ---------------------*- C++ -*-===//
+//
+// 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
+//
+//===----------------------------------------------------------------------===//
+///
+/// \file
+/// Syscall wrapper for getitimer.
+///
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_LIBC_SRC___SUPPORT_OSUTIL_SYSCALL_WRAPPERS_GETITIMER_H
+#define LLVM_LIBC_SRC___SUPPORT_OSUTIL_SYSCALL_WRAPPERS_GETITIMER_H
+
+#include "hdr/types/struct_itimerval.h"
+#include "src/__support/OSUtil/linux/syscall.h" // For syscall_checked
+#include "src/__support/common.h"
+#include "src/__support/error_or.h"
+#include "src/__support/macros/config.h"
+#include <sys/syscall.h> // For syscall numbers
+
+namespace LIBC_NAMESPACE_DECL {
+namespace linux_syscalls {
+
+LIBC_INLINE ErrorOr<int> getitimer(int which, struct itimerval *curr_val) {
+ if constexpr (sizeof(time_t) == sizeof(long)) {
+ return syscall_checked<int>(SYS_getitimer, which, curr_val);
+ } else {
----------------
labath wrote:
That's technically true, but it sort of defeats the purpose of the constexpr if, I think. I only copied that pattern from the previous version, but I think the goal was to do a hard DCE on the 32-bit code path. In practice the code should get DCE'd anyway, but this would still be inconsistent with most of our other uses of constexpr ifs (which keep an else branch even though it kinda conflicts the early-return rule), so I'd like to check if you're sure you want to do that :)
https://github.com/llvm/llvm-project/pull/206974
More information about the libc-commits
mailing list