[libc-commits] [libc] [libc] Refactor sysinfo (PR #221498)
via libc-commits
libc-commits at lists.llvm.org
Sat Sep 5 14:58:21 PDT 2026
https://github.com/afnrow created https://github.com/llvm/llvm-project/pull/221498
Refactor the sysinfo linux wrapper to use int type instead of ErrorOR.
Suggested-by: michael-jr (https://github.com/llvm/llvm-project/pull/221049)
>From cdd337df603dc1f60b688f270ef8029043a946a8 Mon Sep 17 00:00:00 2001
From: yahia ahmed <yahia.a.abdrabou at gmail.com>
Date: Sun, 6 Sep 2026 00:54:19 +0300
Subject: [PATCH] [libc] Refactor sysinfo
---
libc/src/__support/OSUtil/linux/syscall_wrappers/sysinfo.h | 4 ++--
libc/src/stdlib/linux/getloadavg.cpp | 5 ++---
libc/src/sys/sysinfo/linux/sysinfo.cpp | 7 ++++---
libc/src/unistd/linux/sysconf.cpp | 6 +++---
4 files changed, 11 insertions(+), 11 deletions(-)
diff --git a/libc/src/__support/OSUtil/linux/syscall_wrappers/sysinfo.h b/libc/src/__support/OSUtil/linux/syscall_wrappers/sysinfo.h
index ef2b7a3f582e5..7a0cd1a9cc84f 100644
--- a/libc/src/__support/OSUtil/linux/syscall_wrappers/sysinfo.h
+++ b/libc/src/__support/OSUtil/linux/syscall_wrappers/sysinfo.h
@@ -24,8 +24,8 @@
namespace LIBC_NAMESPACE_DECL {
namespace linux_syscalls {
-LIBC_INLINE ErrorOr<int> sysinfo(struct sysinfo *info) {
- return syscall_checked<int>(SYS_sysinfo, info);
+LIBC_INLINE int sysinfo(struct sysinfo *info) {
+ return LIBC_NAMESPACE::syscall_impl<int>(SYS_sysinfo, info);
}
} // namespace linux_syscalls
diff --git a/libc/src/stdlib/linux/getloadavg.cpp b/libc/src/stdlib/linux/getloadavg.cpp
index 7bad028f77716..d8b44729ed2b5 100644
--- a/libc/src/stdlib/linux/getloadavg.cpp
+++ b/libc/src/stdlib/linux/getloadavg.cpp
@@ -26,9 +26,8 @@ LLVM_LIBC_FUNCTION(int, getloadavg, (double loadavg[], int nelem)) {
return 0;
struct sysinfo info;
- auto result = linux_syscalls::sysinfo(&info);
- if (!result) {
- libc_errno = result.error();
+ int result = linux_syscalls::sysinfo(&info);
+ if (result < 0) {
return -1;
}
diff --git a/libc/src/sys/sysinfo/linux/sysinfo.cpp b/libc/src/sys/sysinfo/linux/sysinfo.cpp
index 1b9504e99f1a5..3acadd996dd81 100644
--- a/libc/src/sys/sysinfo/linux/sysinfo.cpp
+++ b/libc/src/sys/sysinfo/linux/sysinfo.cpp
@@ -13,6 +13,7 @@
#include "src/sys/sysinfo/sysinfo.h"
+#include "hdr/errno_macros.h"
#include "hdr/types/struct_sysinfo.h"
#include "src/__support/OSUtil/linux/syscall_wrappers/sysinfo.h"
#include "src/__support/common.h"
@@ -22,9 +23,9 @@
namespace LIBC_NAMESPACE_DECL {
LLVM_LIBC_FUNCTION(int, sysinfo, (struct sysinfo * info)) {
- auto result = linux_syscalls::sysinfo(info);
- if (!result) {
- libc_errno = result.error();
+ int result = linux_syscalls::sysinfo(info);
+ if (result < 0) {
+ libc_errno = -result;
return -1;
}
return 0;
diff --git a/libc/src/unistd/linux/sysconf.cpp b/libc/src/unistd/linux/sysconf.cpp
index 0e55a9e4db335..2608f28e8b0e4 100644
--- a/libc/src/unistd/linux/sysconf.cpp
+++ b/libc/src/unistd/linux/sysconf.cpp
@@ -100,9 +100,9 @@ long get_nprocessors_onln() {
long get_phys_pages() {
struct ::sysinfo info;
- ErrorOr<int> ret = linux_syscalls::sysinfo(&info);
- if (!ret) {
- libc_errno = -ret.error();
+ int ret = linux_syscalls::sysinfo(&info);
+ if (ret < 0) {
+ libc_errno = -ret;
return -1;
}
cpp::optional<unsigned long> page_size = auxv::get(AT_PAGESZ);
More information about the libc-commits
mailing list