Backport: trackers: update lttng-sessiond
[deliverable/lttng-tools.git] / src / bin / lttng-sessiond / ust-app.c
index 0a8ce6b02572fc01326fe2223438c481fd095116..ed9c9fe3509598aef3a63def02c4e99923b82632 100644 (file)
@@ -4084,7 +4084,9 @@ int ust_app_create_channel_glb(struct ltt_ust_session *usess,
                         */
                        continue;
                }
-               if (!trace_ust_pid_tracker_lookup(usess, app->pid)) {
+               if (!(trace_ust_id_tracker_lookup(LTTNG_TRACKER_VPID, usess, app->pid)
+                               && trace_ust_id_tracker_lookup(LTTNG_TRACKER_VUID, usess, app->uid)
+                               && trace_ust_id_tracker_lookup(LTTNG_TRACKER_VGID, usess, app->gid))) {
                        /* Skip. */
                        continue;
                }
@@ -5059,7 +5061,9 @@ void ust_app_global_update(struct ltt_ust_session *usess, struct ust_app *app)
                return;
        }
 
-       if (trace_ust_pid_tracker_lookup(usess, app->pid)) {
+       if (trace_ust_id_tracker_lookup(LTTNG_TRACKER_VPID, usess, app->pid)
+                       && trace_ust_id_tracker_lookup(LTTNG_TRACKER_VUID, usess, app->uid)
+                       && trace_ust_id_tracker_lookup(LTTNG_TRACKER_VGID, usess, app->gid)) {
                ust_app_global_create(usess, app);
        } else {
                ust_app_global_destroy(usess, app);
@@ -6045,21 +6049,24 @@ int ust_app_uid_get_channel_runtime_stats(uint64_t ust_session_id,
        int ret;
        uint64_t consumer_chan_key;
 
+       *discarded = 0;
+       *lost = 0;
+
        ret = buffer_reg_uid_consumer_channel_key(
                        buffer_reg_uid_list, ust_session_id,
                        uchan_id, &consumer_chan_key);
        if (ret < 0) {
+               /* Not found */
+               ret = 0;
                goto end;
        }
 
        if (overwrite) {
                ret = consumer_get_lost_packets(ust_session_id,
                                consumer_chan_key, consumer, lost);
-               *discarded = 0;
        } else {
                ret = consumer_get_discarded_events(ust_session_id,
                                consumer_chan_key, consumer, discarded);
-               *lost = 0;
        }
 
 end:
@@ -6078,10 +6085,13 @@ int ust_app_pid_get_channel_runtime_stats(struct ltt_ust_session *usess,
        struct ust_app_session *ua_sess;
        struct ust_app_channel *ua_chan;
 
+       *discarded = 0;
+       *lost = 0;
+
        rcu_read_lock();
        /*
-        * Iterate over every registered applications, return when we
-        * found one in the right session and channel.
+        * Iterate over every registered applications. Sum counters for
+        * all applications containing requested session and channel.
         */
        cds_lfht_for_each_entry(ust_app_ht->ht, &iter.iter, app, pid_n.node) {
                struct lttng_ht_iter uiter;
@@ -6100,19 +6110,26 @@ int ust_app_pid_get_channel_runtime_stats(struct ltt_ust_session *usess,
                ua_chan = caa_container_of(ua_chan_node, struct ust_app_channel, node);
 
                if (overwrite) {
+                       uint64_t _lost;
+
                        ret = consumer_get_lost_packets(usess->id, ua_chan->key,
-                                       consumer, lost);
-                       *discarded = 0;
-                       goto end;
+                                       consumer, &_lost);
+                       if (ret < 0) {
+                               break;
+                       }
+                       (*lost) += _lost;
                } else {
+                       uint64_t _discarded;
+
                        ret = consumer_get_discarded_events(usess->id,
-                                       ua_chan->key, consumer, discarded);
-                       *lost = 0;
-                       goto end;
+                                       ua_chan->key, consumer, &_discarded);
+                       if (ret < 0) {
+                               break;
+                       }
+                       (*discarded) += _discarded;
                }
        }
 
-end:
        rcu_read_unlock();
        return ret;
 }
This page took 0.028133 seconds and 5 git commands to generate.