<p>pespin has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/c/osmo-trx/+/19050">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">Rename device specific rate counter multi-thread helpers<br><br>RadioInterface ones will be added in next commit, so let's differentiate<br>the structs required for each one.<br><br>Change-Id: Ib0e142a1dd4bedefdb4c5f15c34132da872c0975<br>---<br>M CommonLibs/trx_rate_ctr.cpp<br>M CommonLibs/trx_rate_ctr.h<br>2 files changed, 49 insertions(+), 49 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.osmocom.org:29418/osmo-trx refs/changes/50/19050/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/CommonLibs/trx_rate_ctr.cpp b/CommonLibs/trx_rate_ctr.cpp</span><br><span>index 381b387..e941cf0 100644</span><br><span>--- a/CommonLibs/trx_rate_ctr.cpp</span><br><span>+++ b/CommonLibs/trx_rate_ctr.cpp</span><br><span>@@ -67,17 +67,17 @@</span><br><span> #include "Threads.h"</span><br><span> #include "Logger.h"</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-/* Used in ctrs_pending, when set it means that channel slot contains unused</span><br><span style="color: hsl(120, 100%, 40%);">+/* Used in dev_ctrs_pending, when set it means that channel slot contains unused</span><br><span>    (non-pending) counter data */</span><br><span> #define PENDING_CHAN_NONE SIZE_MAX</span><br><span> </span><br><span> static void *trx_rate_ctr_ctx;</span><br><span> </span><br><span> static struct rate_ctr_group** rate_ctrs;</span><br><span style="color: hsl(0, 100%, 40%);">-static struct device_counters* ctrs_pending;</span><br><span style="color: hsl(120, 100%, 40%);">+static struct device_counters* dev_ctrs_pending;</span><br><span> static size_t chan_len;</span><br><span style="color: hsl(0, 100%, 40%);">-static struct osmo_fd rate_ctr_timerfd;</span><br><span style="color: hsl(0, 100%, 40%);">-static Mutex rate_ctr_mutex;</span><br><span style="color: hsl(120, 100%, 40%);">+static struct osmo_fd dev_rate_ctr_timerfd;</span><br><span style="color: hsl(120, 100%, 40%);">+static Mutex dev_rate_ctr_mutex;</span><br><span> </span><br><span> struct osmo_timer_list threshold_timer;</span><br><span> static LLIST_HEAD(threshold_list);</span><br><span>@@ -93,22 +93,22 @@</span><br><span> };</span><br><span> </span><br><span> const struct value_string trx_chan_ctr_names[] = {</span><br><span style="color: hsl(0, 100%, 40%);">-  { TRX_CTR_RX_OVERRUNS,  "rx_overruns" },</span><br><span style="color: hsl(0, 100%, 40%);">-      { TRX_CTR_TX_UNDERRUNS, "tx_underruns" },</span><br><span style="color: hsl(0, 100%, 40%);">-     { TRX_CTR_RX_DROP_EV,   "rx_drop_events" },</span><br><span style="color: hsl(0, 100%, 40%);">-   { TRX_CTR_RX_DROP_SMPL, "rx_drop_samples" },</span><br><span style="color: hsl(0, 100%, 40%);">-  { TRX_CTR_TX_DROP_EV,   "tx_drop_events" },</span><br><span style="color: hsl(0, 100%, 40%);">-   { TRX_CTR_TX_DROP_SMPL, "tx_drop_samples" },</span><br><span style="color: hsl(120, 100%, 40%);">+        { TRX_CTR_DEV_RX_OVERRUNS,      "rx_overruns" },</span><br><span style="color: hsl(120, 100%, 40%);">+    { TRX_CTR_DEV_TX_UNDERRUNS,     "tx_underruns" },</span><br><span style="color: hsl(120, 100%, 40%);">+   { TRX_CTR_DEV_RX_DROP_EV,       "rx_drop_events" },</span><br><span style="color: hsl(120, 100%, 40%);">+ { TRX_CTR_DEV_RX_DROP_SMPL,     "rx_drop_samples" },</span><br><span style="color: hsl(120, 100%, 40%);">+        { TRX_CTR_DEV_TX_DROP_EV,       "tx_drop_events" },</span><br><span style="color: hsl(120, 100%, 40%);">+ { TRX_CTR_DEV_TX_DROP_SMPL,     "tx_drop_samples" },</span><br><span>       { 0, NULL }</span><br><span> };</span><br><span> </span><br><span> static const struct rate_ctr_desc trx_chan_ctr_desc[] = {</span><br><span style="color: hsl(0, 100%, 40%);">-      [TRX_CTR_RX_OVERRUNS]           = { "device:rx_overruns",     "Number of Rx overruns in FIFO queue" },</span><br><span style="color: hsl(0, 100%, 40%);">-      [TRX_CTR_TX_UNDERRUNS]          = { "device:tx_underruns",    "Number of Tx underruns in FIFO queue" },</span><br><span style="color: hsl(0, 100%, 40%);">-     [TRX_CTR_RX_DROP_EV]            = { "device:rx_drop_events",  "Number of times Rx samples were dropped by HW" },</span><br><span style="color: hsl(0, 100%, 40%);">-    [TRX_CTR_RX_DROP_SMPL]          = { "device:rx_drop_samples", "Number of Rx samples dropped by HW" },</span><br><span style="color: hsl(0, 100%, 40%);">-       [TRX_CTR_TX_DROP_EV]            = { "device:tx_drop_events",  "Number of times Tx samples were dropped by HW" },</span><br><span style="color: hsl(0, 100%, 40%);">-    [TRX_CTR_TX_DROP_SMPL]          = { "device:tx_drop_samples", "Number of Tx samples dropped by HW" }</span><br><span style="color: hsl(120, 100%, 40%);">+      [TRX_CTR_DEV_RX_OVERRUNS]               = { "device:rx_overruns",     "Number of Rx overruns in FIFO queue" },</span><br><span style="color: hsl(120, 100%, 40%);">+    [TRX_CTR_DEV_TX_UNDERRUNS]              = { "device:tx_underruns",    "Number of Tx underruns in FIFO queue" },</span><br><span style="color: hsl(120, 100%, 40%);">+   [TRX_CTR_DEV_RX_DROP_EV]                = { "device:rx_drop_events",  "Number of times Rx samples were dropped by HW" },</span><br><span style="color: hsl(120, 100%, 40%);">+  [TRX_CTR_DEV_RX_DROP_SMPL]              = { "device:rx_drop_samples", "Number of Rx samples dropped by HW" },</span><br><span style="color: hsl(120, 100%, 40%);">+     [TRX_CTR_DEV_TX_DROP_EV]                = { "device:tx_drop_events",  "Number of times Tx samples were dropped by HW" },</span><br><span style="color: hsl(120, 100%, 40%);">+  [TRX_CTR_DEV_TX_DROP_SMPL]              = { "device:tx_drop_samples", "Number of Tx samples dropped by HW" }</span><br><span> };</span><br><span> </span><br><span> static const struct rate_ctr_group_desc trx_chan_ctr_group_desc = {</span><br><span>@@ -119,34 +119,34 @@</span><br><span>    .ctr_desc                       = trx_chan_ctr_desc,</span><br><span> };</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-static int rate_ctr_timerfd_cb(struct osmo_fd *ofd, unsigned int what) {</span><br><span style="color: hsl(120, 100%, 40%);">+static int dev_rate_ctr_timerfd_cb(struct osmo_fd *ofd, unsigned int what) {</span><br><span>         size_t chan;</span><br><span>         struct rate_ctr *ctr;</span><br><span style="color: hsl(0, 100%, 40%);">-   LOGC(DMAIN, NOTICE) << "Main thread is updating counters";</span><br><span style="color: hsl(0, 100%, 40%);">-      rate_ctr_mutex.lock();</span><br><span style="color: hsl(120, 100%, 40%);">+        LOGC(DMAIN, NOTICE) << "Main thread is updating Device counters";</span><br><span style="color: hsl(120, 100%, 40%);">+     dev_rate_ctr_mutex.lock();</span><br><span>   for (chan = 0; chan < chan_len; chan++) {</span><br><span style="color: hsl(0, 100%, 40%);">-            if (ctrs_pending[chan].chan == PENDING_CHAN_NONE)</span><br><span style="color: hsl(120, 100%, 40%);">+             if (dev_ctrs_pending[chan].chan == PENDING_CHAN_NONE)</span><br><span>                        continue;</span><br><span>            LOGCHAN(chan, DMAIN, INFO) << "rate_ctr update";</span><br><span style="color: hsl(0, 100%, 40%);">-                ctr = &rate_ctrs[chan]->ctr[TRX_CTR_RX_OVERRUNS];</span><br><span style="color: hsl(0, 100%, 40%);">-                rate_ctr_add(ctr, ctrs_pending[chan].rx_overruns - ctr->current);</span><br><span style="color: hsl(0, 100%, 40%);">-            ctr = &rate_ctrs[chan]->ctr[TRX_CTR_TX_UNDERRUNS];</span><br><span style="color: hsl(0, 100%, 40%);">-               rate_ctr_add(ctr, ctrs_pending[chan].tx_underruns - ctr->current);</span><br><span style="color: hsl(0, 100%, 40%);">-           ctr = &rate_ctrs[chan]->ctr[TRX_CTR_RX_DROP_EV];</span><br><span style="color: hsl(0, 100%, 40%);">-         rate_ctr_add(ctr, ctrs_pending[chan].rx_dropped_events - ctr->current);</span><br><span style="color: hsl(0, 100%, 40%);">-              ctr = &rate_ctrs[chan]->ctr[TRX_CTR_RX_DROP_SMPL];</span><br><span style="color: hsl(0, 100%, 40%);">-               rate_ctr_add(ctr, ctrs_pending[chan].rx_dropped_samples - ctr->current);</span><br><span style="color: hsl(0, 100%, 40%);">-             ctr = &rate_ctrs[chan]->ctr[TRX_CTR_TX_DROP_EV];</span><br><span style="color: hsl(0, 100%, 40%);">-         rate_ctr_add(ctr, ctrs_pending[chan].tx_dropped_events - ctr->current);</span><br><span style="color: hsl(0, 100%, 40%);">-              ctr = &rate_ctrs[chan]->ctr[TRX_CTR_TX_DROP_SMPL];</span><br><span style="color: hsl(0, 100%, 40%);">-               rate_ctr_add(ctr, ctrs_pending[chan].tx_dropped_samples - ctr->current);</span><br><span style="color: hsl(120, 100%, 40%);">+           ctr = &rate_ctrs[chan]->ctr[TRX_CTR_DEV_RX_OVERRUNS];</span><br><span style="color: hsl(120, 100%, 40%);">+          rate_ctr_add(ctr, dev_ctrs_pending[chan].rx_overruns - ctr->current);</span><br><span style="color: hsl(120, 100%, 40%);">+              ctr = &rate_ctrs[chan]->ctr[TRX_CTR_DEV_TX_UNDERRUNS];</span><br><span style="color: hsl(120, 100%, 40%);">+         rate_ctr_add(ctr, dev_ctrs_pending[chan].tx_underruns - ctr->current);</span><br><span style="color: hsl(120, 100%, 40%);">+             ctr = &rate_ctrs[chan]->ctr[TRX_CTR_DEV_RX_DROP_EV];</span><br><span style="color: hsl(120, 100%, 40%);">+           rate_ctr_add(ctr, dev_ctrs_pending[chan].rx_dropped_events - ctr->current);</span><br><span style="color: hsl(120, 100%, 40%);">+                ctr = &rate_ctrs[chan]->ctr[TRX_CTR_DEV_RX_DROP_SMPL];</span><br><span style="color: hsl(120, 100%, 40%);">+         rate_ctr_add(ctr, dev_ctrs_pending[chan].rx_dropped_samples - ctr->current);</span><br><span style="color: hsl(120, 100%, 40%);">+               ctr = &rate_ctrs[chan]->ctr[TRX_CTR_DEV_TX_DROP_EV];</span><br><span style="color: hsl(120, 100%, 40%);">+           rate_ctr_add(ctr, dev_ctrs_pending[chan].tx_dropped_events - ctr->current);</span><br><span style="color: hsl(120, 100%, 40%);">+                ctr = &rate_ctrs[chan]->ctr[TRX_CTR_DEV_TX_DROP_SMPL];</span><br><span style="color: hsl(120, 100%, 40%);">+         rate_ctr_add(ctr, dev_ctrs_pending[chan].tx_dropped_samples - ctr->current);</span><br><span> </span><br><span>          /* Mark as done */</span><br><span style="color: hsl(0, 100%, 40%);">-              ctrs_pending[chan].chan = PENDING_CHAN_NONE;</span><br><span style="color: hsl(120, 100%, 40%);">+          dev_ctrs_pending[chan].chan = PENDING_CHAN_NONE;</span><br><span>     }</span><br><span style="color: hsl(0, 100%, 40%);">-       if (osmo_timerfd_disable(&rate_ctr_timerfd) < 0)</span><br><span style="color: hsl(120, 100%, 40%);">+       if (osmo_timerfd_disable(&dev_rate_ctr_timerfd) < 0)</span><br><span>          LOGC(DMAIN, ERROR) << "Failed to disable timerfd";</span><br><span style="color: hsl(0, 100%, 40%);">-      rate_ctr_mutex.unlock();</span><br><span style="color: hsl(120, 100%, 40%);">+      dev_rate_ctr_mutex.unlock();</span><br><span>         return 0;</span><br><span> }</span><br><span> </span><br><span>@@ -165,12 +165,12 @@</span><br><span>   case S_DEVICE_COUNTER_CHANGE:</span><br><span>                ctr = (struct device_counters *)signal_data;</span><br><span>                 LOGCHAN(ctr->chan, DMAIN, NOTICE) << "Received counter change from radioDevice";</span><br><span style="color: hsl(0, 100%, 40%);">-             rate_ctr_mutex.lock();</span><br><span style="color: hsl(0, 100%, 40%);">-          ctrs_pending[ctr->chan] = *ctr;</span><br><span style="color: hsl(0, 100%, 40%);">-              if (osmo_timerfd_schedule(&rate_ctr_timerfd, &next_sched, &intv_sched) < 0) {</span><br><span style="color: hsl(120, 100%, 40%);">+          dev_rate_ctr_mutex.lock();</span><br><span style="color: hsl(120, 100%, 40%);">+            dev_ctrs_pending[ctr->chan] = *ctr;</span><br><span style="color: hsl(120, 100%, 40%);">+                if (osmo_timerfd_schedule(&dev_rate_ctr_timerfd, &next_sched, &intv_sched) < 0) {</span><br><span>                     LOGC(DMAIN, ERROR) << "Failed to schedule timerfd: " << errno << " = "<< strerror(errno);</span><br><span>                }</span><br><span style="color: hsl(0, 100%, 40%);">-               rate_ctr_mutex.unlock();</span><br><span style="color: hsl(120, 100%, 40%);">+              dev_rate_ctr_mutex.unlock();</span><br><span>                 break;</span><br><span>       default:</span><br><span>             break;</span><br><span>@@ -272,19 +272,19 @@</span><br><span>       size_t  i;</span><br><span>   trx_rate_ctr_ctx = ctx;</span><br><span>      chan_len = trx_ctx->cfg.num_chans;</span><br><span style="color: hsl(0, 100%, 40%);">-   ctrs_pending = (struct device_counters*) talloc_zero_size(ctx, chan_len * sizeof(struct device_counters));</span><br><span style="color: hsl(120, 100%, 40%);">+    dev_ctrs_pending = (struct device_counters*) talloc_zero_size(ctx, chan_len * sizeof(struct device_counters));</span><br><span>       rate_ctrs = (struct rate_ctr_group**) talloc_zero_size(ctx, chan_len * sizeof(struct rate_ctr_group*));</span><br><span> </span><br><span>  for (i = 0; i < chan_len; i++) {</span><br><span style="color: hsl(0, 100%, 40%);">-             ctrs_pending[i].chan = PENDING_CHAN_NONE;</span><br><span style="color: hsl(120, 100%, 40%);">+             dev_ctrs_pending[i].chan = PENDING_CHAN_NONE;</span><br><span>                rate_ctrs[i] = rate_ctr_group_alloc(ctx, &trx_chan_ctr_group_desc, i);</span><br><span>           if (!rate_ctrs[i]) {</span><br><span>                         LOGCHAN(i, DMAIN, ERROR) << "Failed to allocate rate ctr";</span><br><span>                   exit(1);</span><br><span>             }</span><br><span>    }</span><br><span style="color: hsl(0, 100%, 40%);">-       rate_ctr_timerfd.fd = -1;</span><br><span style="color: hsl(0, 100%, 40%);">-       if (osmo_timerfd_setup(&rate_ctr_timerfd, rate_ctr_timerfd_cb, NULL) < 0) {</span><br><span style="color: hsl(120, 100%, 40%);">+    dev_rate_ctr_timerfd.fd = -1;</span><br><span style="color: hsl(120, 100%, 40%);">+ if (osmo_timerfd_setup(&dev_rate_ctr_timerfd, dev_rate_ctr_timerfd_cb, NULL) < 0) {</span><br><span>           LOGC(DMAIN, ERROR) << "Failed to setup timerfd";</span><br><span>             exit(1);</span><br><span>     }</span><br><span>diff --git a/CommonLibs/trx_rate_ctr.h b/CommonLibs/trx_rate_ctr.h</span><br><span>index 155f413..e122f99 100644</span><br><span>--- a/CommonLibs/trx_rate_ctr.h</span><br><span>+++ b/CommonLibs/trx_rate_ctr.h</span><br><span>@@ -4,12 +4,12 @@</span><br><span> #include <osmocom/vty/command.h></span><br><span> </span><br><span> enum TrxCtr {</span><br><span style="color: hsl(0, 100%, 40%);">-   TRX_CTR_RX_OVERRUNS,</span><br><span style="color: hsl(0, 100%, 40%);">-    TRX_CTR_TX_UNDERRUNS,</span><br><span style="color: hsl(0, 100%, 40%);">-   TRX_CTR_RX_DROP_EV,</span><br><span style="color: hsl(0, 100%, 40%);">-     TRX_CTR_RX_DROP_SMPL,</span><br><span style="color: hsl(0, 100%, 40%);">-   TRX_CTR_TX_DROP_EV,</span><br><span style="color: hsl(0, 100%, 40%);">-     TRX_CTR_TX_DROP_SMPL,</span><br><span style="color: hsl(120, 100%, 40%);">+ TRX_CTR_DEV_RX_OVERRUNS,</span><br><span style="color: hsl(120, 100%, 40%);">+      TRX_CTR_DEV_TX_UNDERRUNS,</span><br><span style="color: hsl(120, 100%, 40%);">+     TRX_CTR_DEV_RX_DROP_EV,</span><br><span style="color: hsl(120, 100%, 40%);">+       TRX_CTR_DEV_RX_DROP_SMPL,</span><br><span style="color: hsl(120, 100%, 40%);">+     TRX_CTR_DEV_TX_DROP_EV,</span><br><span style="color: hsl(120, 100%, 40%);">+       TRX_CTR_DEV_TX_DROP_SMPL,</span><br><span> };</span><br><span> </span><br><span> struct ctr_threshold {</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-trx/+/19050">change 19050</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://gerrit.osmocom.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://gerrit.osmocom.org/c/osmo-trx/+/19050"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: osmo-trx </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-Change-Id: Ib0e142a1dd4bedefdb4c5f15c34132da872c0975 </div>
<div style="display:none"> Gerrit-Change-Number: 19050 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: pespin <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>