From 64b2564ef0aa2d7050902e859fa962049daa8508 Mon Sep 17 00:00:00 2001 From: David Goulet Date: Fri, 9 Nov 2012 13:20:46 -0500 Subject: [PATCH] Add libc errno translation layer to UST error code Also add four new possible code being EEXIST, EINVAL, ENOSYS and EPERM. Signed-off-by: David Goulet Signed-off-by: Mathieu Desnoyers --- include/lttng/ust-error.h | 6 +++++- liblttng-ust-comm/lttng-ust-comm.c | 4 ++++ liblttng-ust/lttng-ust-comm.c | 27 ++++++++++++++++++++++++--- 3 files changed, 33 insertions(+), 4 deletions(-) diff --git a/include/lttng/ust-error.h b/include/lttng/ust-error.h index 49890a96..0c46c904 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-comm/lttng-ust-comm.c b/liblttng-ust-comm/lttng-ust-comm.c index 8765ea6e..9a67ea19 100644 --- a/liblttng-ust-comm/lttng-ust-comm.c +++ b/liblttng-ust-comm/lttng-ust-comm.c @@ -44,6 +44,10 @@ static const char *ustcomm_readable_code[] = { [ USTCOMM_CODE_OFFSET(LTTNG_UST_OK) ] = "Success", [ USTCOMM_CODE_OFFSET(LTTNG_UST_ERR) ] = "Unknown error", [ USTCOMM_CODE_OFFSET(LTTNG_UST_ERR_NOENT) ] = "No entry", + [ USTCOMM_CODE_OFFSET(LTTNG_UST_ERR_EXIST) ] = "Object already exists", + [ USTCOMM_CODE_OFFSET(LTTNG_UST_ERR_INVAL) ] = "Invalid argument", + [ USTCOMM_CODE_OFFSET(LTTNG_UST_ERR_PERM) ] = "Permission denied", + [ USTCOMM_CODE_OFFSET(LTTNG_UST_ERR_NOSYS) ] = "Not implemented", }; /* diff --git a/liblttng-ust/lttng-ust-comm.c b/liblttng-ust/lttng-ust-comm.c index f11b7d01..92d0fd70 100644 --- a/liblttng-ust/lttng-ust-comm.c +++ b/liblttng-ust/lttng-ust-comm.c @@ -376,10 +376,31 @@ 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) { switch (lum->cmd) { -- 2.34.1