Browse Source

Kernel+LibC: Move errno definitions to Kernel/API/POSIX

This fixes at least half of our LibC includes in the kernel. The source
of truth for errno codes and their description strings now lives in
Kernel/API/POSIX/errno.h as an enumeration, which LibC includes.
sin-ack 3 năm trước cách đây
mục cha
commit
69ef211925

+ 1 - 1
AK/Error.h

@@ -12,7 +12,7 @@
 #include <AK/Variant.h>
 
 #if defined(__serenity__) && defined(KERNEL)
-#    include <LibC/errno_numbers.h>
+#    include <LibC/errno_codes.h>
 #else
 #    include <errno.h>
 #endif

+ 97 - 0
Kernel/API/POSIX/errno.h

@@ -0,0 +1,97 @@
+/*
+ * Copyright (c) 2018-2020, Andreas Kling <kling@serenityos.org>
+ * Copyright (c) 2021, sin-ack <sin-ack@protonmail.com>
+ *
+ * SPDX-License-Identifier: BSD-2-Clause
+ */
+
+#pragma once
+
+#define ENUMERATE_ERRNO_CODES(E)                                      \
+    E(ESUCCESS, "Success (not an error)")                             \
+    E(EPERM, "Operation not permitted")                               \
+    E(ENOENT, "No such file or directory")                            \
+    E(ESRCH, "No such process")                                       \
+    E(EINTR, "Interrupted syscall")                                   \
+    E(EIO, "I/O error")                                               \
+    E(ENXIO, "No such device or address")                             \
+    E(E2BIG, "Argument list too long")                                \
+    E(ENOEXEC, "Exec format error")                                   \
+    E(EBADF, "Bad fd number")                                         \
+    E(ECHILD, "No child processes")                                   \
+    E(EAGAIN, "Try again")                                            \
+    E(ENOMEM, "Out of memory")                                        \
+    E(EACCES, "Permission denied")                                    \
+    E(EFAULT, "Bad address")                                          \
+    E(ENOTBLK, "Block device required")                               \
+    E(EBUSY, "Device or resource busy")                               \
+    E(EEXIST, "File already exists")                                  \
+    E(EXDEV, "Cross-device link")                                     \
+    E(ENODEV, "No such device")                                       \
+    E(ENOTDIR, "Not a directory")                                     \
+    E(EISDIR, "Is a directory")                                       \
+    E(EINVAL, "Invalid argument")                                     \
+    E(ENFILE, "File table overflow")                                  \
+    E(EMFILE, "Too many open files")                                  \
+    E(ENOTTY, "Not a TTY")                                            \
+    E(ETXTBSY, "Text file busy")                                      \
+    E(EFBIG, "File too large")                                        \
+    E(ENOSPC, "No space left on device")                              \
+    E(ESPIPE, "Illegal seek")                                         \
+    E(EROFS, "Read-only filesystem")                                  \
+    E(EMLINK, "Too many links")                                       \
+    E(EPIPE, "Broken pipe")                                           \
+    E(ERANGE, "Range error")                                          \
+    E(ENAMETOOLONG, "Name too long")                                  \
+    E(ELOOP, "Too many symlinks")                                     \
+    E(EOVERFLOW, "Overflow")                                          \
+    E(EOPNOTSUPP, "Operation not supported")                          \
+    E(ENOSYS, "No such syscall")                                      \
+    E(ENOTIMPL, "Not implemented")                                    \
+    E(EAFNOSUPPORT, "Address family not supported")                   \
+    E(ENOTSOCK, "Not a socket")                                       \
+    E(EADDRINUSE, "Address in use")                                   \
+    E(EWHYTHO, "Failed without setting an error code (bug!)")         \
+    E(ENOTEMPTY, "Directory not empty")                               \
+    E(EDOM, "Math argument out of domain")                            \
+    E(ECONNREFUSED, "Connection refused")                             \
+    E(EHOSTDOWN, "Host is down")                                      \
+    E(EADDRNOTAVAIL, "Address not available")                         \
+    E(EISCONN, "Already connected")                                   \
+    E(ECONNABORTED, "Connection aborted")                             \
+    E(EALREADY, "Connection already in progress")                     \
+    E(ECONNRESET, "Connection reset")                                 \
+    E(EDESTADDRREQ, "Destination address required")                   \
+    E(EHOSTUNREACH, "Host unreachable")                               \
+    E(EILSEQ, "Illegal byte sequence")                                \
+    E(EMSGSIZE, "Message size")                                       \
+    E(ENETDOWN, "Network down")                                       \
+    E(ENETUNREACH, "Network unreachable")                             \
+    E(ENETRESET, "Network reset")                                     \
+    E(ENOBUFS, "No buffer space")                                     \
+    E(ENOLCK, "No lock available")                                    \
+    E(ENOMSG, "No message")                                           \
+    E(ENOPROTOOPT, "No protocol option")                              \
+    E(ENOTCONN, "Not connected")                                      \
+    E(ESHUTDOWN, "Transport endpoint has shutdown")                   \
+    E(ETOOMANYREFS, "Too many references")                            \
+    E(ESOCKTNOSUPPORT, "Socket type not supported")                   \
+    E(EPROTONOSUPPORT, "Protocol not supported")                      \
+    E(EDEADLK, "Resource deadlock would occur")                       \
+    E(ETIMEDOUT, "Timed out")                                         \
+    E(EPROTOTYPE, "Wrong protocol type")                              \
+    E(EINPROGRESS, "Operation in progress")                           \
+    E(ENOTHREAD, "No such thread")                                    \
+    E(EPROTO, "Protocol error")                                       \
+    E(ENOTSUP, "Not supported")                                       \
+    E(EPFNOSUPPORT, "Protocol family not supported")                  \
+    E(EDIRINTOSELF, "Cannot make directory a subdirectory of itself") \
+    E(EDQUOT, "Quota exceeded")                                       \
+    E(ENOTRECOVERABLE, "State not recoverable")                       \
+    E(EMAXERRNO, "The highest errno +1 :^)")
+
+enum ErrnoCode {
+#define __ENUMERATE_ERRNO_CODE(c, s) c,
+    ENUMERATE_ERRNO_CODES(__ENUMERATE_ERRNO_CODE)
+#undef __ENUMERATE_ERRNO_CODE
+};

+ 1 - 1
Kernel/Devices/FullDevice.cpp

@@ -5,10 +5,10 @@
  */
 
 #include <AK/Memory.h>
+#include <Kernel/API/POSIX/errno.h>
 #include <Kernel/Devices/DeviceManagement.h>
 #include <Kernel/Devices/FullDevice.h>
 #include <Kernel/Sections.h>
-#include <LibC/errno_numbers.h>
 
 namespace Kernel {
 

+ 1 - 1
Kernel/FileSystem/Ext2FileSystem.cpp

@@ -9,6 +9,7 @@
 #include <AK/MemoryStream.h>
 #include <AK/StdLibExtras.h>
 #include <AK/StringView.h>
+#include <Kernel/API/POSIX/errno.h>
 #include <Kernel/Debug.h>
 #include <Kernel/Devices/BlockDevice.h>
 #include <Kernel/FileSystem/Ext2FileSystem.h>
@@ -16,7 +17,6 @@
 #include <Kernel/FileSystem/ext2_fs.h>
 #include <Kernel/Process.h>
 #include <Kernel/UnixTypes.h>
-#include <LibC/errno_numbers.h>
 
 namespace Kernel {
 

+ 1 - 1
Kernel/FileSystem/InodeFile.cpp

@@ -5,6 +5,7 @@
  */
 
 #include <AK/StringView.h>
+#include <Kernel/API/POSIX/errno.h>
 #include <Kernel/FileSystem/Inode.h>
 #include <Kernel/FileSystem/InodeFile.h>
 #include <Kernel/FileSystem/OpenFileDescription.h>
@@ -12,7 +13,6 @@
 #include <Kernel/Memory/PrivateInodeVMObject.h>
 #include <Kernel/Memory/SharedInodeVMObject.h>
 #include <Kernel/Process.h>
-#include <LibC/errno_numbers.h>
 #include <LibC/sys/ioctl_numbers.h>
 
 namespace Kernel {

+ 1 - 1
Kernel/FileSystem/OpenFileDescription.cpp

@@ -6,6 +6,7 @@
  */
 
 #include <AK/MemoryStream.h>
+#include <Kernel/API/POSIX/errno.h>
 #include <Kernel/Debug.h>
 #include <Kernel/Devices/BlockDevice.h>
 #include <Kernel/FileSystem/Custody.h>
@@ -20,7 +21,6 @@
 #include <Kernel/TTY/MasterPTY.h>
 #include <Kernel/TTY/TTY.h>
 #include <Kernel/UnixTypes.h>
-#include <LibC/errno_numbers.h>
 
 namespace Kernel {
 

+ 1 - 1
Kernel/FileSystem/ProcFS.cpp

@@ -7,6 +7,7 @@
  */
 
 #include <AK/Singleton.h>
+#include <Kernel/API/POSIX/errno.h>
 #include <Kernel/Debug.h>
 #include <Kernel/FileSystem/Custody.h>
 #include <Kernel/FileSystem/OpenFileDescription.h>
@@ -15,7 +16,6 @@
 #include <Kernel/Heap/kmalloc.h>
 #include <Kernel/Process.h>
 #include <Kernel/Sections.h>
-#include <LibC/errno_numbers.h>
 
 namespace Kernel {
 

+ 1 - 1
Kernel/FileSystem/VirtualFileSystem.cpp

@@ -7,6 +7,7 @@
 #include <AK/GenericLexer.h>
 #include <AK/Singleton.h>
 #include <AK/StringBuilder.h>
+#include <Kernel/API/POSIX/errno.h>
 #include <Kernel/Debug.h>
 #include <Kernel/Devices/BlockDevice.h>
 #include <Kernel/Devices/DeviceManagement.h>
@@ -19,7 +20,6 @@
 #include <Kernel/KSyms.h>
 #include <Kernel/Process.h>
 #include <Kernel/Sections.h>
-#include <LibC/errno_numbers.h>
 
 namespace Kernel {
 

+ 1 - 1
Kernel/Graphics/FramebufferDevice.cpp

@@ -6,6 +6,7 @@
 
 #include <AK/Checked.h>
 #include <AK/Try.h>
+#include <Kernel/API/POSIX/errno.h>
 #include <Kernel/Debug.h>
 #include <Kernel/Devices/DeviceManagement.h>
 #include <Kernel/Graphics/FramebufferDevice.h>
@@ -14,7 +15,6 @@
 #include <Kernel/Memory/MemoryManager.h>
 #include <Kernel/Process.h>
 #include <Kernel/Sections.h>
-#include <LibC/errno_numbers.h>
 #include <LibC/sys/ioctl_numbers.h>
 
 namespace Kernel {

+ 1 - 1
Kernel/Graphics/GenericFramebufferDevice.cpp

@@ -6,6 +6,7 @@
 
 #include <AK/Checked.h>
 #include <AK/Try.h>
+#include <Kernel/API/POSIX/errno.h>
 #include <Kernel/Debug.h>
 #include <Kernel/Devices/DeviceManagement.h>
 #include <Kernel/Graphics/FramebufferDevice.h>
@@ -15,7 +16,6 @@
 #include <Kernel/Process.h>
 #include <Kernel/Sections.h>
 #include <Kernel/StdLib.h>
-#include <LibC/errno_numbers.h>
 
 #define MAX_RESOLUTION_WIDTH 4096
 #define MAX_RESOLUTION_HEIGHT 2160

+ 1 - 1
Kernel/Net/IPv4Socket.cpp

@@ -6,6 +6,7 @@
 
 #include <AK/Singleton.h>
 #include <AK/StringBuilder.h>
+#include <Kernel/API/POSIX/errno.h>
 #include <Kernel/Debug.h>
 #include <Kernel/FileSystem/OpenFileDescription.h>
 #include <Kernel/Net/ARP.h>
@@ -21,7 +22,6 @@
 #include <Kernel/Net/UDPSocket.h>
 #include <Kernel/Process.h>
 #include <Kernel/UnixTypes.h>
-#include <LibC/errno_numbers.h>
 #include <LibC/sys/ioctl_numbers.h>
 
 namespace Kernel {

+ 1 - 1
Kernel/Net/LocalSocket.cpp

@@ -6,6 +6,7 @@
 
 #include <AK/Singleton.h>
 #include <AK/StringBuilder.h>
+#include <Kernel/API/POSIX/errno.h>
 #include <Kernel/Debug.h>
 #include <Kernel/FileSystem/OpenFileDescription.h>
 #include <Kernel/FileSystem/VirtualFileSystem.h>
@@ -15,7 +16,6 @@
 #include <Kernel/Process.h>
 #include <Kernel/StdLib.h>
 #include <Kernel/UnixTypes.h>
-#include <LibC/errno_numbers.h>
 #include <LibC/sys/ioctl_numbers.h>
 
 namespace Kernel {

+ 1 - 1
Kernel/Net/Socket.cpp

@@ -5,6 +5,7 @@
  */
 
 #include <AK/StringView.h>
+#include <Kernel/API/POSIX/errno.h>
 #include <Kernel/Debug.h>
 #include <Kernel/FileSystem/OpenFileDescription.h>
 #include <Kernel/Net/IPv4Socket.h>
@@ -13,7 +14,6 @@
 #include <Kernel/Net/Socket.h>
 #include <Kernel/Process.h>
 #include <Kernel/UnixTypes.h>
-#include <LibC/errno_numbers.h>
 
 namespace Kernel {
 

+ 1 - 1
Kernel/Process.cpp

@@ -17,6 +17,7 @@
 #ifdef ENABLE_KERNEL_COVERAGE_COLLECTION
 #    include <Kernel/Devices/KCOVDevice.h>
 #endif
+#include <Kernel/API/POSIX/errno.h>
 #include <Kernel/Devices/NullDevice.h>
 #include <Kernel/FileSystem/Custody.h>
 #include <Kernel/FileSystem/OpenFileDescription.h>
@@ -34,7 +35,6 @@
 #include <Kernel/TTY/TTY.h>
 #include <Kernel/Thread.h>
 #include <Kernel/ThreadTracer.h>
-#include <LibC/errno_numbers.h>
 #include <LibC/limits.h>
 
 namespace Kernel {

+ 1 - 1
Kernel/TTY/MasterPTY.cpp

@@ -4,13 +4,13 @@
  * SPDX-License-Identifier: BSD-2-Clause
  */
 
+#include <Kernel/API/POSIX/errno.h>
 #include <Kernel/Arch/x86/InterruptDisabler.h>
 #include <Kernel/Debug.h>
 #include <Kernel/Process.h>
 #include <Kernel/TTY/MasterPTY.h>
 #include <Kernel/TTY/PTYMultiplexer.h>
 #include <Kernel/TTY/SlavePTY.h>
-#include <LibC/errno_numbers.h>
 #include <LibC/signal_numbers.h>
 #include <LibC/sys/ioctl_numbers.h>
 

+ 1 - 1
Kernel/TTY/PTYMultiplexer.cpp

@@ -5,12 +5,12 @@
  */
 
 #include <AK/Singleton.h>
+#include <Kernel/API/POSIX/errno.h>
 #include <Kernel/Debug.h>
 #include <Kernel/FileSystem/OpenFileDescription.h>
 #include <Kernel/Sections.h>
 #include <Kernel/TTY/MasterPTY.h>
 #include <Kernel/TTY/PTYMultiplexer.h>
-#include <LibC/errno_numbers.h>
 
 namespace Kernel {
 

+ 1 - 1
Kernel/TTY/TTY.cpp

@@ -6,11 +6,11 @@
 
 #include <AK/ScopeGuard.h>
 #include <AK/StringView.h>
+#include <Kernel/API/POSIX/errno.h>
 #include <Kernel/Arch/x86/InterruptDisabler.h>
 #include <Kernel/Debug.h>
 #include <Kernel/Process.h>
 #include <Kernel/TTY/TTY.h>
-#include <LibC/errno_numbers.h>
 #include <LibC/signal_numbers.h>
 #include <LibC/sys/ioctl_numbers.h>
 #define TTYDEFCHARS

+ 1 - 1
Kernel/UserOrKernelBuffer.h

@@ -9,10 +9,10 @@
 
 #include <AK/Types.h>
 #include <AK/Userspace.h>
+#include <Kernel/API/POSIX/errno.h>
 #include <Kernel/Memory/MemoryManager.h>
 #include <Kernel/StdLib.h>
 #include <Kernel/UnixTypes.h>
-#include <LibC/errno_numbers.h>
 
 namespace Kernel {
 

+ 1 - 1
Userland/Libraries/LibC/errno.h

@@ -6,7 +6,7 @@
 
 #pragma once
 
-#include <errno_numbers.h>
+#include <errno_codes.h>
 #include <sys/cdefs.h>
 
 #define __RETURN_WITH_ERRNO(rc, good_ret, bad_ret) \

+ 3 - 82
Userland/Libraries/LibC/errno_numbers.h → Userland/Libraries/LibC/errno_codes.h

@@ -6,168 +6,89 @@
 
 #pragma once
 
-enum ErrnoCode {
-    EPERM = 1,
+#include <Kernel/API/POSIX/errno.h>
+
+// NOTE: You can't define with a macro, so these have to be duplicated.
 #define EPERM EPERM
-    ENOENT,
 #define ENOENT ENOENT
-    ESRCH,
 #define ESRCH ESRCH
-    EINTR,
 #define EINTR EINTR
-    EIO,
 #define EIO EIO
-    ENXIO,
 #define ENXIO ENXIO
-    E2BIG,
 #define E2BIG E2BIG
-    ENOEXEC,
 #define ENOEXEC ENOEXEC
-    EBADF,
 #define EBADF EBADF
-    ECHILD,
 #define ECHILD ECHILD
-    EAGAIN,
 #define EAGAIN EAGAIN
-    ENOMEM,
 #define ENOMEM ENOMEM
-    EACCES,
 #define EACCES EACCES
-    EFAULT,
 #define EFAULT EFAULT
-    ENOTBLK,
 #define ENOTBLK ENOTBLK
-    EBUSY,
 #define EBUSY EBUSY
-    EEXIST,
 #define EEXIST EEXIST
-    EXDEV,
 #define EXDEV EXDEV
-    ENODEV,
 #define ENODEV ENODEV
-    ENOTDIR,
 #define ENOTDIR ENOTDIR
-    EISDIR,
 #define EISDIR EISDIR
-    EINVAL,
 #define EINVAL EINVAL
-    ENFILE,
 #define ENFILE ENFILE
-    EMFILE,
 #define EMFILE EMFILE
-    ENOTTY,
 #define ENOTTY ENOTTY
-    ETXTBSY,
 #define ETXTBSY ETXTBSY
-    EFBIG,
 #define EFBIG EFBIG
-    ENOSPC,
 #define ENOSPC ENOSPC
-    ESPIPE,
 #define ESPIPE ESPIPE
-    EROFS,
 #define EROFS EROFS
-    EMLINK,
 #define EMLINK EMLINK
-    EPIPE,
 #define EPIPE EPIPE
-    ERANGE,
 #define ERANGE ERANGE
-    ENAMETOOLONG,
 #define ENAMETOOLONG ENAMETOOLONG
-    ELOOP,
 #define ELOOP ELOOP
-    EOVERFLOW,
 #define EOVERFLOW EOVERFLOW
-    EOPNOTSUPP,
 #define EOPNOTSUPP EOPNOTSUPP
-    ENOSYS,
 #define ENOSYS ENOSYS
-    ENOTIMPL,
 #define ENOTIMPL ENOTIMPL
-    EAFNOSUPPORT,
 #define EAFNOSUPPORT EAFNOSUPPORT
-    ENOTSOCK,
 #define ENOTSOCK ENOTSOCK
-    EADDRINUSE,
 #define EADDRINUSE EADDRINUSE
-    EWHYTHO,
 #define EWHYTHO EWHYTHO
-    ENOTEMPTY,
 #define ENOTEMPTY ENOTEMPTY
-    EDOM,
 #define EDOM EDOM
-    ECONNREFUSED,
 #define ECONNREFUSED ECONNREFUSED
-    EHOSTDOWN,
 #define EHOSTDOWN EHOSTDOWN
-    EADDRNOTAVAIL,
 #define EADDRNOTAVAIL EADDRNOTAVAIL
-    EISCONN,
 #define EISCONN EISCONN
-    ECONNABORTED,
 #define ECONNABORTED ECONNABORTED
-    EALREADY,
 #define EALREADY EALREADY
-    ECONNRESET,
 #define ECONNRESET ECONNRESET
-    EDESTADDRREQ,
 #define EDESTADDRREQ EDESTADDRREQ
-    EHOSTUNREACH,
 #define EHOSTUNREACH EHOSTUNREACH
-    EILSEQ,
 #define EILSEQ EILSEQ
-    EMSGSIZE,
 #define EMSGSIZE EMSGSIZE
-    ENETDOWN,
 #define ENETDOWN ENETDOWN
-    ENETUNREACH,
 #define ENETUNREACH ENETUNREACH
-    ENETRESET,
 #define ENETRESET ENETRESET
-    ENOBUFS,
 #define ENOBUFS ENOBUFS
-    ENOLCK,
 #define ENOLCK ENOLCK
-    ENOMSG,
 #define ENOMSG ENOMSG
-    ENOPROTOOPT,
 #define ENOPROTOOPT ENOPROTOOPT
-    ENOTCONN,
 #define ENOTCONN ENOTCONN
-    ESHUTDOWN,
 #define ESHUTDOWN ESHUTDOWN
-    ETOOMANYREFS,
 #define ETOOMANYREFS ETOOMANYREFS
-    EPROTONOSUPPORT,
 #define EPROTONOSUPPORT EPROTONOSUPPORT
-    ESOCKTNOSUPPORT,
 #define ESOCKTNOSUPPORT ESOCKTNOSUPPORT
-    EDEADLK,
 #define EDEADLK EDEADLK
-    ETIMEDOUT,
 #define ETIMEDOUT ETIMEDOUT
-    EPROTOTYPE,
 #define EPROTOTYPE EPROTOTYPE
-    EINPROGRESS,
 #define EINPROGRESS EINPROGRESS
-    ENOTHREAD,
 #define ENOTHREAD ENOTHREAD
-    EPROTO,
 #define EPROTO EPROTO
-    ENOTSUP,
 #define ENOTSUP ENOTSUP
-    EPFNOSUPPORT,
 #define EPFNOSUPPORT EPFNOSUPPORT
-    EDIRINTOSELF,
 #define EDQUOT EDQUOT
-    EDQUOT,
 #define EDIRINTOSELF EDIRINTOSELF
-    ENOTRECOVERABLE,
 #define ENOTRECOVERABLE ENOTRECOVERABLE
-    EMAXERRNO,
 #define EMAXERRNO EMAXERRNO
-};
 
 #define EWOULDBLOCK EAGAIN
 #define ELAST EMAXERRNO

+ 1 - 1
Userland/Libraries/LibC/grp.cpp

@@ -8,7 +8,7 @@
 #include <AK/String.h>
 #include <AK/Vector.h>
 #include <errno.h>
-#include <errno_numbers.h>
+#include <errno_codes.h>
 #include <grp.h>
 #include <stdio.h>
 #include <stdlib.h>

+ 3 - 81
Userland/Libraries/LibC/string.cpp

@@ -264,87 +264,9 @@ char* strncat(char* dest, const char* src, size_t n)
 }
 
 const char* const sys_errlist[] = {
-    "Success (not an error)",
-    "Operation not permitted",
-    "No such file or directory",
-    "No such process",
-    "Interrupted syscall",
-    "I/O error",
-    "No such device or address",
-    "Argument list too long",
-    "Exec format error",
-    "Bad fd number",
-    "No child processes",
-    "Try again",
-    "Out of memory",
-    "Permission denied",
-    "Bad address",
-    "Block device required",
-    "Device or resource busy",
-    "File already exists",
-    "Cross-device link",
-    "No such device",
-    "Not a directory",
-    "Is a directory",
-    "Invalid argument",
-    "File table overflow",
-    "Too many open files",
-    "Not a TTY",
-    "Text file busy",
-    "File too large",
-    "No space left on device",
-    "Illegal seek",
-    "Read-only filesystem",
-    "Too many links",
-    "Broken pipe",
-    "Range error",
-    "Name too long",
-    "Too many symlinks",
-    "Overflow",
-    "Operation not supported",
-    "No such syscall",
-    "Not implemented",
-    "Address family not supported",
-    "Not a socket",
-    "Address in use",
-    "Failed without setting an error code (bug!)",
-    "Directory not empty",
-    "Math argument out of domain",
-    "Connection refused",
-    "Host is down",
-    "Address not available",
-    "Already connected",
-    "Connection aborted",
-    "Connection already in progress",
-    "Connection reset",
-    "Destination address required",
-    "Host unreachable",
-    "Illegal byte sequence",
-    "Message size",
-    "Network down",
-    "Network unreachable",
-    "Network reset",
-    "No buffer space",
-    "No lock available",
-    "No message",
-    "No protocol option",
-    "Not connected",
-    "Transport endpoint has shutdown",
-    "Too many references",
-    "Protocol not supported",
-    "Socket type not supported",
-    "Resource deadlock would occur",
-    "Timed out",
-    "Wrong protocol type",
-    "Operation in progress",
-    "No such thread",
-    "Protocol error",
-    "Not supported",
-    "Protocol family not supported",
-    "Cannot make directory a subdirectory of itself",
-    "Quota exceeded",
-    "State not recoverable",
-    "The highest errno +1 :^)",
+#define __ENUMERATE_ERRNO_CODE(c, s) s,
+    ENUMERATE_ERRNO_CODES(__ENUMERATE_ERRNO_CODE)
+#undef __ENUMERATE_ERRNO_CODE
 };
 static_assert(array_size(sys_errlist) == (EMAXERRNO + 1));
 

+ 1 - 1
Userland/Utilities/syscall.cpp

@@ -9,7 +9,7 @@
 #include <AK/Iterator.h>
 #include <AK/Vector.h>
 #include <LibCore/ArgsParser.h>
-#include <errno_numbers.h>
+#include <errno_codes.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>