Also add four new possible code being EEXIST, EINVAL, ENOSYS and EPERM.
Signed-off-by: David Goulet <dgoulet@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
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 */
[ 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",
};
/*
* 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) {