[lttng-dev] [PATCH lttng-ust v2] Add libc errno translation layer to UST error code
Mathieu Desnoyers
mathieu.desnoyers at efficios.com
Fri Nov 9 13:21:45 EST 2012
* David Goulet (dgoulet at efficios.com) wrote:
> Also add four new possible code being EEXIST, EINVAL, ENOSYS and EPERM.
merged with minor style changes,
Thanks,
Mathieu
>
> Signed-off-by: David Goulet <dgoulet at efficios.com>
> ---
> include/lttng/ust-error.h | 6 +++++-
> liblttng-ust-comm/lttng-ust-comm.c | 4 ++++
> liblttng-ust/lttng-ust-comm.c | 26 +++++++++++++++++++++++---
> 3 files changed, 32 insertions(+), 4 deletions(-)
>
> diff --git a/include/lttng/ust-error.h b/include/lttng/ust-error.h
> index 49890a9..0d829f8 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 8765ea6..9a67ea1 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 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
>
>
> _______________________________________________
> lttng-dev mailing list
> lttng-dev at lists.lttng.org
> http://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev
--
Mathieu Desnoyers
Operating System Efficiency R&D Consultant
EfficiOS Inc.
http://www.efficios.com
More information about the lttng-dev
mailing list