<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>