Refactoring: introduce lttng_tracker_ids data structure
[lttng-tools.git] / src / bin / lttng-sessiond / cmd.c
index 53850f74aae784b97a668f30c429c92cca8858be..4ce2d43fab11159d5ebb64ae4b9147769558ecc7 100644 (file)
@@ -1442,12 +1442,14 @@ error:
 }
 
 /*
- * Command LTTNG_TRACK_PID processed by the client thread.
+ * Command LTTNG_TRACK_ID processed by the client thread.
  *
  * Called with session lock held.
  */
-int cmd_track_pid(struct ltt_session *session, enum lttng_domain_type domain,
-               int pid)
+int cmd_track_id(struct ltt_session *session,
+               enum lttng_tracker_type tracker_type,
+               enum lttng_domain_type domain,
+               const struct lttng_tracker_id *id)
 {
        int ret;
 
@@ -1460,7 +1462,7 @@ int cmd_track_pid(struct ltt_session *session, enum lttng_domain_type domain,
 
                ksess = session->kernel_session;
 
-               ret = kernel_track_pid(ksess, pid);
+               ret = kernel_track_id(tracker_type, ksess, id);
                if (ret != LTTNG_OK) {
                        goto error;
                }
@@ -1474,7 +1476,7 @@ int cmd_track_pid(struct ltt_session *session, enum lttng_domain_type domain,
 
                usess = session->ust_session;
 
-               ret = trace_ust_track_pid(usess, pid);
+               ret = trace_ust_track_id(tracker_type, usess, id);
                if (ret != LTTNG_OK) {
                        goto error;
                }
@@ -1493,12 +1495,14 @@ error:
 }
 
 /*
- * Command LTTNG_UNTRACK_PID processed by the client thread.
+ * Command LTTNG_UNTRACK_ID processed by the client thread.
  *
  * Called with session lock held.
  */
-int cmd_untrack_pid(struct ltt_session *session, enum lttng_domain_type domain,
-               int pid)
+int cmd_untrack_id(struct ltt_session *session,
+               enum lttng_tracker_type tracker_type,
+               enum lttng_domain_type domain,
+               const struct lttng_tracker_id *id)
 {
        int ret;
 
@@ -1511,7 +1515,7 @@ int cmd_untrack_pid(struct ltt_session *session, enum lttng_domain_type domain,
 
                ksess = session->kernel_session;
 
-               ret = kernel_untrack_pid(ksess, pid);
+               ret = kernel_untrack_id(tracker_type, ksess, id);
                if (ret != LTTNG_OK) {
                        goto error;
                }
@@ -1525,7 +1529,7 @@ int cmd_untrack_pid(struct ltt_session *session, enum lttng_domain_type domain,
 
                usess = session->ust_session;
 
-               ret = trace_ust_untrack_pid(usess, pid);
+               ret = trace_ust_untrack_id(tracker_type, usess, id);
                if (ret != LTTNG_OK) {
                        goto error;
                }
@@ -2573,15 +2577,16 @@ ssize_t cmd_list_syscalls(struct lttng_event **events)
 }
 
 /*
- * Command LTTNG_LIST_TRACKER_PIDS processed by the client thread.
+ * Command LTTNG_LIST_TRACKER_IDS processed by the client thread.
  *
  * Called with session lock held.
  */
-ssize_t cmd_list_tracker_pids(struct ltt_session *session,
-               enum lttng_domain_type domain, int32_t **pids)
+int cmd_list_tracker_ids(enum lttng_tracker_type tracker_type,
+               struct ltt_session *session,
+               enum lttng_domain_type domain,
+               struct lttng_tracker_ids **ids)
 {
-       int ret;
-       ssize_t nr_pids = 0;
+       int ret = LTTNG_OK;
 
        switch (domain) {
        case LTTNG_DOMAIN_KERNEL:
@@ -2589,9 +2594,9 @@ ssize_t cmd_list_tracker_pids(struct ltt_session *session,
                struct ltt_kernel_session *ksess;
 
                ksess = session->kernel_session;
-               nr_pids = kernel_list_tracker_pids(ksess, pids);
-               if (nr_pids < 0) {
-                       ret = LTTNG_ERR_KERN_LIST_FAIL;
+               ret = kernel_list_tracker_ids(tracker_type, ksess, ids);
+               if (ret != LTTNG_OK) {
+                       ret = -LTTNG_ERR_KERN_LIST_FAIL;
                        goto error;
                }
                break;
@@ -2601,9 +2606,9 @@ ssize_t cmd_list_tracker_pids(struct ltt_session *session,
                struct ltt_ust_session *usess;
 
                usess = session->ust_session;
-               nr_pids = trace_ust_list_tracker_pids(usess, pids);
-               if (nr_pids < 0) {
-                       ret = LTTNG_ERR_UST_LIST_FAIL;
+               ret = trace_ust_list_tracker_ids(tracker_type, usess, ids);
+               if (ret != LTTNG_OK) {
+                       ret = -LTTNG_ERR_UST_LIST_FAIL;
                        goto error;
                }
                break;
@@ -2612,15 +2617,13 @@ ssize_t cmd_list_tracker_pids(struct ltt_session *session,
        case LTTNG_DOMAIN_JUL:
        case LTTNG_DOMAIN_PYTHON:
        default:
-               ret = LTTNG_ERR_UND;
+               ret = -LTTNG_ERR_UND;
                goto error;
        }
 
-       return nr_pids;
-
 error:
        /* Return negative value to differentiate return code */
-       return -ret;
+       return ret;
 }
 
 /*
This page took 0.02848 seconds and 5 git commands to generate.