Assert on unknown UST buffer type
[lttng-tools.git] / src / bin / lttng-sessiond / kernel.c
index 570747f183ac96f479fd0a7480919b27345221bd..2cad0b2ab44b8bdd8ece486521e62f6654677e4d 100644 (file)
@@ -15,7 +15,6 @@
  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  */
 
-#define _GNU_SOURCE
 #define _LGPL_SOURCE
 #include <errno.h>
 #include <fcntl.h>
@@ -379,16 +378,46 @@ error:
 
 int kernel_track_pid(struct ltt_kernel_session *session, int pid)
 {
+       int ret;
+
        DBG("Kernel track PID %d for session id %" PRIu64 ".",
                        pid, session->id);
-       return kernctl_track_pid(session->fd, pid);
+       ret = kernctl_track_pid(session->fd, pid);
+       if (!ret) {
+               return LTTNG_OK;
+       }
+       switch (errno) {
+       case EINVAL:
+               return LTTNG_ERR_INVALID;
+       case ENOMEM:
+               return LTTNG_ERR_NOMEM;
+       case EEXIST:
+               return LTTNG_ERR_PID_TRACKED;
+       default:
+               return LTTNG_ERR_UNK;
+       }
 }
 
 int kernel_untrack_pid(struct ltt_kernel_session *session, int pid)
 {
+       int ret;
+
        DBG("Kernel untrack PID %d for session id %" PRIu64 ".",
                        pid, session->id);
-       return kernctl_untrack_pid(session->fd, pid);
+       ret = kernctl_untrack_pid(session->fd, pid);
+       if (!ret) {
+               return LTTNG_OK;
+       }
+       switch (errno) {
+       case EINVAL:
+               return LTTNG_ERR_INVALID;
+       case ENOMEM:
+               return LTTNG_ERR_NOMEM;
+       case ENOENT:
+               return LTTNG_ERR_PID_NOT_TRACKED;
+       default:
+               return LTTNG_ERR_UNK;
+       }
 }
 
 ssize_t kernel_list_tracker_pids(struct ltt_kernel_session *session,
This page took 0.024751 seconds and 4 git commands to generate.