[lttng-dev] [PATCH lttng-ust] Add libc errno translation layer to UST error code
David Goulet
dgoulet at efficios.com
Fri Nov 9 12:41:28 EST 2012
Also add four new possible code being EEXIST, EINVAL, ENOSYS and EPERM.
Signed-off-by: David Goulet <dgoulet at efficios.com>
---
include/lttng/ust-error.h | 6 +++++-
liblttng-ust/lttng-ust-comm.c | 26 +++++++++++++++++++++++---
2 files changed, 28 insertions(+), 4 deletions(-)
diff --git a/include/lttng/ust-error.h b/include/lttng/ust-error.h
index 49890a9..241d554 100644
--- a/include/lttng/ust-error.h
+++ b/include/lttng/ust-error.h
@@ -36,7 +36,11 @@
enum lttng_ust_error_code {
LTTNG_UST_OK = 0, /* Ok */
LTTNG_UST_ERR = 1024, /* Unknown Error */
- LTTNG_UST_ERR_NOENT, /* No entry */
+ LTTNG_UST_ERR_NOENT = 1025, /* No entry */
+ LTTNG_UST_ERR_EXIST = 1026, /* Object exists */
+ LTTNG_UST_ERR_INVAL = 1027, /* Invalid argument */
+ LTTNG_UST_ERR_PERM = 1028, /* Permission denied */
+ LTTNG_UST_ERR_NOSYS = 1029, /* Not implemented */
/* MUST be last element */
LTTNG_UST_ERR_NR, /* Last element */
diff --git a/liblttng-ust/lttng-ust-comm.c b/liblttng-ust/lttng-ust-comm.c
index f11b7d0..6eec73c 100644
--- a/liblttng-ust/lttng-ust-comm.c
+++ b/liblttng-ust/lttng-ust-comm.c
@@ -376,9 +376,29 @@ end:
* we already have a more precise error message to
* report.
*/
- if (ret > -LTTNG_UST_ERR)
- lur.ret_code = -LTTNG_UST_ERR;
- else
+ if (ret > -LTTNG_UST_ERR) {
+ /* Translate code to UST error. */
+ switch (ret) {
+ case -EEXIST:
+ lur.ret_code = -LTTNG_UST_ERR_EXIST;
+ break;
+ case -EINVAL:
+ lur.ret_code = -LTTNG_UST_ERR_INVAL;
+ break;
+ case -ENOENT:
+ lur.ret_code = -LTTNG_UST_ERR_NOENT;
+ break;
+ case -EPERM:
+ lur.ret_code = -LTTNG_UST_ERR_PERM;
+ break;
+ case -ENOSYS:
+ lur.ret_code = -LTTNG_UST_ERR_NOSYS;
+ break;
+ default:
+ lur.ret_code = -LTTNG_UST_ERR;
+ break;
+ }
+ } else
lur.ret_code = ret;
}
if (ret >= 0) {
--
1.7.10.4
More information about the lttng-dev
mailing list