|
10 | 10 | #undef _GNU_SOURCE |
11 | 11 | #include <stdio.h> |
12 | 12 | #include <string.h> |
| 13 | +#include <errno.h> |
13 | 14 |
|
14 | 15 | #include "libbpf.h" |
15 | 16 | #include "libbpf_internal.h" |
16 | 17 |
|
| 18 | +#ifndef ENOTSUPP |
| 19 | +#define ENOTSUPP 524 |
| 20 | +#endif |
| 21 | + |
17 | 22 | /* make sure libbpf doesn't use kernel-only integer typedefs */ |
18 | 23 | #pragma GCC poison u8 u16 u32 u64 s8 s16 s32 s64 |
19 | 24 |
|
@@ -73,3 +78,70 @@ int libbpf_strerror(int err, char *buf, size_t size) |
73 | 78 | return libbpf_err(-ERANGE); |
74 | 79 | return libbpf_err(-ENOENT); |
75 | 80 | } |
| 81 | + |
| 82 | +const char *libbpf_errstr(int err) |
| 83 | +{ |
| 84 | + static __thread char buf[12]; |
| 85 | + |
| 86 | + if (err > 0) |
| 87 | + err = -err; |
| 88 | + |
| 89 | + switch (err) { |
| 90 | + case -E2BIG: return "-E2BIG"; |
| 91 | + case -EACCES: return "-EACCES"; |
| 92 | + case -EADDRINUSE: return "-EADDRINUSE"; |
| 93 | + case -EADDRNOTAVAIL: return "-EADDRNOTAVAIL"; |
| 94 | + case -EAGAIN: return "-EAGAIN"; |
| 95 | + case -EALREADY: return "-EALREADY"; |
| 96 | + case -EBADF: return "-EBADF"; |
| 97 | + case -EBADFD: return "-EBADFD"; |
| 98 | + case -EBUSY: return "-EBUSY"; |
| 99 | + case -ECANCELED: return "-ECANCELED"; |
| 100 | + case -ECHILD: return "-ECHILD"; |
| 101 | + case -EDEADLK: return "-EDEADLK"; |
| 102 | + case -EDOM: return "-EDOM"; |
| 103 | + case -EEXIST: return "-EEXIST"; |
| 104 | + case -EFAULT: return "-EFAULT"; |
| 105 | + case -EFBIG: return "-EFBIG"; |
| 106 | + case -EILSEQ: return "-EILSEQ"; |
| 107 | + case -EINPROGRESS: return "-EINPROGRESS"; |
| 108 | + case -EINTR: return "-EINTR"; |
| 109 | + case -EINVAL: return "-EINVAL"; |
| 110 | + case -EIO: return "-EIO"; |
| 111 | + case -EISDIR: return "-EISDIR"; |
| 112 | + case -ELOOP: return "-ELOOP"; |
| 113 | + case -EMFILE: return "-EMFILE"; |
| 114 | + case -EMLINK: return "-EMLINK"; |
| 115 | + case -EMSGSIZE: return "-EMSGSIZE"; |
| 116 | + case -ENAMETOOLONG: return "-ENAMETOOLONG"; |
| 117 | + case -ENFILE: return "-ENFILE"; |
| 118 | + case -ENODATA: return "-ENODATA"; |
| 119 | + case -ENODEV: return "-ENODEV"; |
| 120 | + case -ENOENT: return "-ENOENT"; |
| 121 | + case -ENOEXEC: return "-ENOEXEC"; |
| 122 | + case -ENOLINK: return "-ENOLINK"; |
| 123 | + case -ENOMEM: return "-ENOMEM"; |
| 124 | + case -ENOSPC: return "-ENOSPC"; |
| 125 | + case -ENOTBLK: return "-ENOTBLK"; |
| 126 | + case -ENOTDIR: return "-ENOTDIR"; |
| 127 | + case -ENOTSUPP: return "-ENOTSUPP"; |
| 128 | + case -ENOTTY: return "-ENOTTY"; |
| 129 | + case -ENXIO: return "-ENXIO"; |
| 130 | + case -EOPNOTSUPP: return "-EOPNOTSUPP"; |
| 131 | + case -EOVERFLOW: return "-EOVERFLOW"; |
| 132 | + case -EPERM: return "-EPERM"; |
| 133 | + case -EPIPE: return "-EPIPE"; |
| 134 | + case -EPROTO: return "-EPROTO"; |
| 135 | + case -EPROTONOSUPPORT: return "-EPROTONOSUPPORT"; |
| 136 | + case -ERANGE: return "-ERANGE"; |
| 137 | + case -EROFS: return "-EROFS"; |
| 138 | + case -ESPIPE: return "-ESPIPE"; |
| 139 | + case -ESRCH: return "-ESRCH"; |
| 140 | + case -ETXTBSY: return "-ETXTBSY"; |
| 141 | + case -EUCLEAN: return "-EUCLEAN"; |
| 142 | + case -EXDEV: return "-EXDEV"; |
| 143 | + default: |
| 144 | + snprintf(buf, sizeof(buf), "%d", err); |
| 145 | + return buf; |
| 146 | + } |
| 147 | +} |
0 commit comments