[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