[libc-commits] [libc] [libc] Refactor core Linux syscalls to use syscall_wrappers (PR #185983)

Alexey Samsonov via libc-commits libc-commits at lists.llvm.org
Thu Mar 12 09:57:53 PDT 2026


================
@@ -0,0 +1,68 @@
+.. _syscall_wrapper_refactor:
+
+==============================
+Syscall Wrapper Refactoring
+==============================
+
+Purpose
+=======
+
+LLVM-libc is transitioning to a centralized system for Linux syscalls. The goal
+is to move all direct ``syscall_impl`` calls into a dedicated directory:
+``src/__support/OSUtil/linux/syscall_wrappers/``.
+
+This refactor provides several benefits:
+
+* **Type Safety**: Using ``ErrorOr<T>`` ensures that error conditions are
+  handled explicitly.
+* **Consistency**: Standardizes the conversion of syscall return values into
+  errno-compatible objects.
+* **Maintainability**: Centralizes platform-specific syscall logic, making it
+  easier to audit and update.
+
+The Pattern
+===========
+
+Each syscall should have its own header-only library in the ``syscall_wrappers``
+directory. The wrapper function should return an ``ErrorOr<T>``.
+
+Example Wrapper (``src/__support/OSUtil/linux/syscall_wrappers/read.h``):
+--------------------------------------------------------------------------
+
+.. code-block:: c++
+
+    #include "src/__support/OSUtil/linux/syscall.h" // For syscall_impl
+    #include "src/__support/error_or.h"
+    #include "src/__support/common.h"
+    #include <sys/syscall.h> // For syscall numbers
+
+    namespace LIBC_NAMESPACE_DECL {
+    namespace internal {
----------------
vonosmas wrote:

Let the bike-shedding begin (sorry).

How do you feel about a more precise descriptive namespace for syscalls, like `syscalls::` or even `syscalls::linux::` to make the call sites self-documented?

https://github.com/llvm/llvm-project/pull/185983


More information about the libc-commits mailing list