From: Mykyta Yatsenko <mykyta.yatsenko5@gmail.com>
To: bpf@vger.kernel.org, ast@kernel.org, andrii@kernel.org,
daniel@iogearbox.net, kafai@meta.com, kernel-team@meta.com
Cc: Mykyta Yatsenko <yatsenko@meta.com>
Subject: [PATCH bpf-next v3 1/4] libbpf: introduce errstr() for stringifying errno
Date: Mon, 11 Nov 2024 21:29:16 +0000 [thread overview]
Message-ID: <20241111212919.368971-2-mykyta.yatsenko5@gmail.com> (raw)
In-Reply-To: <20241111212919.368971-1-mykyta.yatsenko5@gmail.com>
From: Mykyta Yatsenko <yatsenko@meta.com>
Add function errstr(int err) that allows converting numeric error codes
into string representations.
Signed-off-by: Mykyta Yatsenko <yatsenko@meta.com>
---
tools/lib/bpf/str_error.c | 59 +++++++++++++++++++++++++++++++++++++++
tools/lib/bpf/str_error.h | 7 +++++
2 files changed, 66 insertions(+)
diff --git a/tools/lib/bpf/str_error.c b/tools/lib/bpf/str_error.c
index 5e6a1e27ddf9..cf817c0c7ddd 100644
--- a/tools/lib/bpf/str_error.c
+++ b/tools/lib/bpf/str_error.c
@@ -5,6 +5,10 @@
#include <errno.h>
#include "str_error.h"
+#ifndef ENOTSUPP
+#define ENOTSUPP 524
+#endif
+
/* make sure libbpf doesn't use kernel-only integer typedefs */
#pragma GCC poison u8 u16 u32 u64 s8 s16 s32 s64
@@ -31,3 +35,58 @@ char *libbpf_strerror_r(int err, char *dst, int len)
}
return dst;
}
+
+const char *errstr(int err)
+{
+ static __thread char buf[12];
+
+ if (err > 0)
+ err = -err;
+
+ switch (err) {
+ case -EINVAL: return "-EINVAL";
+ case -EPERM: return "-EPERM";
+ case -ENXIO: return "-ENXIO";
+ case -ENOMEM: return "-ENOMEM";
+ case -ENOENT: return "-ENOENT";
+ case -E2BIG: return "-E2BIG";
+ case -EEXIST: return "-EEXIST";
+ case -EFAULT: return "-EFAULT";
+ case -ENOSPC: return "-ENOSPC";
+ case -EACCES: return "-EACCES";
+ case -EAGAIN: return "-EAGAIN";
+ case -EBADF: return "-EBADF";
+ case -ENAMETOOLONG: return "-ENAMETOOLONG";
+ case -ESRCH: return "-ESRCH";
+ case -EBUSY: return "-EBUSY";
+ case -ENOTSUPP: return "-ENOTSUPP";
+ case -EPROTO: return "-EPROTO";
+ case -ERANGE: return "-ERANGE";
+ case -EMSGSIZE: return "-EMSGSIZE";
+ case -EINTR: return "-EINTR";
+ case -ENODATA: return "-ENODATA";
+ case -ENODEV: return "-ENODEV";
+ case -ENOLINK:return "-ENOLINK";
+ case -EIO: return "-EIO";
+ case -EUCLEAN: return "-EUCLEAN";
+ case -EDOM: return "-EDOM";
+ case -ELOOP: return "-ELOOP";
+ case -EPROTONOSUPPORT: return "-EPROTONOSUPPORT";
+ case -EDEADLK: return "-EDEADLK";
+ case -EOVERFLOW: return "-EOVERFLOW";
+ case -EOPNOTSUPP: return "-EOPNOTSUPP";
+ case -EINPROGRESS: return "-EINPROGRESS";
+ case -EBADFD: return "-EBADFD";
+ case -EADDRINUSE: return "-EADDRINUSE";
+ case -EADDRNOTAVAIL: return "-EADDRNOTAVAIL";
+ case -ECANCELED: return "-ECANCELED";
+ case -EILSEQ: return "-EILSEQ";
+ case -EMFILE: return "-EMFILE";
+ case -ENOTTY: return "-ENOTTY";
+ case -EALREADY: return "-EALREADY";
+ case -ECHILD: return "-ECHILD";
+ default:
+ snprintf(buf, sizeof(buf), "%d", err);
+ return buf;
+ }
+}
diff --git a/tools/lib/bpf/str_error.h b/tools/lib/bpf/str_error.h
index 626d7ffb03d6..66ffebde0684 100644
--- a/tools/lib/bpf/str_error.h
+++ b/tools/lib/bpf/str_error.h
@@ -6,4 +6,11 @@
char *libbpf_strerror_r(int err, char *dst, int len);
+/**
+ * @brief **errstr()** returns string corresponding to numeric errno
+ * @param err negative numeric errno
+ * @return pointer to string representation of the errno, that is invalidated
+ * upon the next call.
+ */
+const char *errstr(int err);
#endif /* __LIBBPF_STR_ERROR_H */
--
2.47.0
next prev parent reply other threads:[~2024-11-11 21:29 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-11-11 21:29 [PATCH bpf-next v3 0/4] libbpf: stringify error codes in log messages Mykyta Yatsenko
2024-11-11 21:29 ` Mykyta Yatsenko [this message]
2024-11-12 4:35 ` [PATCH bpf-next v3 1/4] libbpf: introduce errstr() for stringifying errno Andrii Nakryiko
2024-11-11 21:29 ` [PATCH bpf-next v3 2/4] libbpf: stringify errno in log messages in libbpf.c Mykyta Yatsenko
2024-11-11 21:29 ` [PATCH bpf-next v3 3/4] libbpf: stringify errno in log messages in btf*.c Mykyta Yatsenko
2024-11-11 21:29 ` [PATCH bpf-next v3 4/4] libbpf: stringify errno in log messages in the remaining code Mykyta Yatsenko
2024-11-12 4:40 ` [PATCH bpf-next v3 0/4] libbpf: stringify error codes in log messages patchwork-bot+netdevbpf
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20241111212919.368971-2-mykyta.yatsenko5@gmail.com \
--to=mykyta.yatsenko5@gmail.com \
--cc=andrii@kernel.org \
--cc=ast@kernel.org \
--cc=bpf@vger.kernel.org \
--cc=daniel@iogearbox.net \
--cc=kafai@meta.com \
--cc=kernel-team@meta.com \
--cc=yatsenko@meta.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.