<p>laforge has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/c/osmo-bts/+/22641">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">initial support for static userspace probes via systemtap<br><br>This adds a --enable-systemtap configure option, which will then<br>add static tracepoints to the generated osmo-bts-* binary.<br><br>At this point, only two sets of tracepoints are supported, and<br>only in osmo-bts-trx: ul_data_{start,done} and dl_rst_{start,done}.<br><br>The probes are intended to be used for analyzing the amount of time<br>needed for processing of uplink bursts / generation of downlink bursts.<br><br>Change-Id: Ibb4962253f1a195dc1a54405bac058ccb2545799<br>---<br>M configure.ac<br>M src/common/Makefile.am<br>M src/common/pcu_sock.c<br>A src/common/probes.d<br>M src/osmo-bts-trx/Makefile.am<br>A src/osmo-bts-trx/probes.d<br>M src/osmo-bts-trx/scheduler_trx.c<br>M src/osmo-bts-trx/trx_if.c<br>8 files changed, 72 insertions(+), 1 deletion(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.osmocom.org:29418/osmo-bts refs/changes/41/22641/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/configure.ac b/configure.ac</span><br><span>index 249a81a..e8309d7 100644</span><br><span>--- a/configure.ac</span><br><span>+++ b/configure.ac</span><br><span>@@ -349,6 +349,38 @@</span><br><span>       AC_SUBST([OSMO_GSM_MANUALS_DIR])</span><br><span> fi</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+#</span><br><span style="color: hsl(120, 100%, 40%);">+# SystemTap support</span><br><span style="color: hsl(120, 100%, 40%);">+#</span><br><span style="color: hsl(120, 100%, 40%);">+AC_MSG_CHECKING([whether to include systemtap tracing support])</span><br><span style="color: hsl(120, 100%, 40%);">+AC_ARG_ENABLE([systemtap],</span><br><span style="color: hsl(120, 100%, 40%);">+          [AS_HELP_STRING([--enable-systemtap],</span><br><span style="color: hsl(120, 100%, 40%);">+                         [Enable inclusion of systemtap trace support])],</span><br><span style="color: hsl(120, 100%, 40%);">+              [ENABLE_SYSTEMTAP="${enableval}"], [ENABLE_SYSTEMTAP='no'])</span><br><span style="color: hsl(120, 100%, 40%);">+AM_CONDITIONAL([ENABLE_SYSTEMTAP], [test x$ENABLE_SYSTEMTAP = xyes])</span><br><span style="color: hsl(120, 100%, 40%);">+AC_MSG_RESULT(${ENABLE_SYSTEMTAP})</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+if test "x${ENABLE_SYSTEMTAP}" = xyes; then</span><br><span style="color: hsl(120, 100%, 40%);">+  # Additional configuration for --enable-systemtap is HERE</span><br><span style="color: hsl(120, 100%, 40%);">+  AC_CHECK_PROGS(DTRACE, dtrace)</span><br><span style="color: hsl(120, 100%, 40%);">+  if test -z "$DTRACE"; then</span><br><span style="color: hsl(120, 100%, 40%);">+    AC_MSG_ERROR([dtrace not found])</span><br><span style="color: hsl(120, 100%, 40%);">+  fi</span><br><span style="color: hsl(120, 100%, 40%);">+  AC_CHECK_HEADER([sys/sdt.h], [SDT_H_FOUND='yes'],</span><br><span style="color: hsl(120, 100%, 40%);">+                [SDT_H_FOUND='no';</span><br><span style="color: hsl(120, 100%, 40%);">+                   AC_MSG_ERROR([systemtap support needs sys/sdt.h header])])</span><br><span style="color: hsl(120, 100%, 40%);">+  AC_DEFINE([HAVE_SYSTEMTAP], [1], [Define to 1 if using SystemTap probes.])</span><br><span style="color: hsl(120, 100%, 40%);">+  AC_ARG_WITH([tapset-install-dir],</span><br><span style="color: hsl(120, 100%, 40%);">+        [AS_HELP_STRING([--with-tapset-install-dir],</span><br><span style="color: hsl(120, 100%, 40%);">+             [The absolute path where the tapset dir will be installed])],</span><br><span style="color: hsl(120, 100%, 40%);">+              [if test "x${withval}" = x; then</span><br><span style="color: hsl(120, 100%, 40%);">+               ABS_TAPSET_DIR="\$(datadir)/systemtap/tapset"</span><br><span style="color: hsl(120, 100%, 40%);">+             else</span><br><span style="color: hsl(120, 100%, 40%);">+            ABS_TAPSET_DIR="${withval}"</span><br><span style="color: hsl(120, 100%, 40%);">+               fi], [ABS_TAPSET_DIR="\$(datadir)/systemtap/tapset"])</span><br><span style="color: hsl(120, 100%, 40%);">+  AC_SUBST(ABS_TAPSET_DIR)</span><br><span style="color: hsl(120, 100%, 40%);">+fi</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> # https://www.freedesktop.org/software/systemd/man/daemon.html</span><br><span> AC_ARG_WITH([systemdsystemunitdir],</span><br><span>      [AS_HELP_STRING([--with-systemdsystemunitdir=DIR], [Directory for systemd service files])],,</span><br><span>diff --git a/src/common/Makefile.am b/src/common/Makefile.am</span><br><span>index d979bc0..99b74f6 100644</span><br><span>--- a/src/common/Makefile.am</span><br><span>+++ b/src/common/Makefile.am</span><br><span>@@ -43,6 +43,18 @@</span><br><span>     nm_bb_transc_fsm.c \</span><br><span>         nm_channel_fsm.c \</span><br><span>   nm_radio_carrier_fsm.c \</span><br><span style="color: hsl(120, 100%, 40%);">+      probes.d \</span><br><span>   $(NULL)</span><br><span> </span><br><span> libl1sched_a_SOURCES = scheduler.c</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+if ENABLE_SYSTEMTAP</span><br><span style="color: hsl(120, 100%, 40%);">+probes.h: probes.d</span><br><span style="color: hsl(120, 100%, 40%);">+  $(DTRACE) -C -h -s $< -o $@</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+probes.lo: probes.d</span><br><span style="color: hsl(120, 100%, 40%);">+ $(LIBTOOL) --mode=compile $(AM_V_lt) --tag=CC env CFLAGS="$(CFLAGS)" $(DTRACE) -C -G -s $< -o $@</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+BUILT_SOURCES = probes.h probes.lo</span><br><span style="color: hsl(120, 100%, 40%);">+libbts_la_LDADD = probes.lo</span><br><span style="color: hsl(120, 100%, 40%);">+endif</span><br><span>diff --git a/src/common/pcu_sock.c b/src/common/pcu_sock.c</span><br><span>index fb32773..3b09e49 100644</span><br><span>--- a/src/common/pcu_sock.c</span><br><span>+++ b/src/common/pcu_sock.c</span><br><span>@@ -1115,7 +1115,7 @@</span><br><span>             LOGP(DPCU, LOGL_NOTICE, "PCU connects but we already have "</span><br><span>                        "another active connection ?!?\n");</span><br><span>                /* We already have one PCU connected, this is all we support */</span><br><span style="color: hsl(0, 100%, 40%);">-         state->listen_bfd.when &= ~OSMO_FD_READ;</span><br><span style="color: hsl(120, 100%, 40%);">+               osmo_fd_read_disable(&state->listen_bfd);</span><br><span>             close(rc);</span><br><span>           return 0;</span><br><span>    }</span><br><span>diff --git a/src/common/probes.d b/src/common/probes.d</span><br><span>new file mode 100644</span><br><span>index 0000000..aaf9030</span><br><span>--- /dev/null</span><br><span>+++ b/src/common/probes.d</span><br><span>@@ -0,0 +1,2 @@</span><br><span style="color: hsl(120, 100%, 40%);">+provider osmo_bts {</span><br><span style="color: hsl(120, 100%, 40%);">+};</span><br><span>diff --git a/src/osmo-bts-trx/Makefile.am b/src/osmo-bts-trx/Makefile.am</span><br><span>index 54d1af9..7317fdc 100644</span><br><span>--- a/src/osmo-bts-trx/Makefile.am</span><br><span>+++ b/src/osmo-bts-trx/Makefile.am</span><br><span>@@ -51,6 +51,7 @@</span><br><span>   trx_provision_fsm.c \</span><br><span>        trx_vty.c \</span><br><span>  loops.c \</span><br><span style="color: hsl(120, 100%, 40%);">+     probes.d \</span><br><span>   $(NULL)</span><br><span> </span><br><span> osmo_bts_trx_LDADD = \</span><br><span>@@ -58,3 +59,14 @@</span><br><span>   $(top_builddir)/src/common/libbts.a \</span><br><span>        $(LDADD) \</span><br><span>   $(NULL)</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+if ENABLE_SYSTEMTAP</span><br><span style="color: hsl(120, 100%, 40%);">+probes.h: probes.d</span><br><span style="color: hsl(120, 100%, 40%);">+    $(DTRACE) -C -h -s $< -o $@</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+probes.lo: probes.d</span><br><span style="color: hsl(120, 100%, 40%);">+ $(LIBTOOL) --mode=compile $(AM_V_lt) --tag=CC env CFLAGS="$(CFLAGS)" $(DTRACE) -C -G -s $< -o $@</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+BUILT_SOURCES = probes.h probes.lo</span><br><span style="color: hsl(120, 100%, 40%);">+osmo_bts_trx_LDADD += probes.lo</span><br><span style="color: hsl(120, 100%, 40%);">+endif</span><br><span>diff --git a/src/osmo-bts-trx/probes.d b/src/osmo-bts-trx/probes.d</span><br><span>new file mode 100644</span><br><span>index 0000000..2f905bd</span><br><span>--- /dev/null</span><br><span>+++ b/src/osmo-bts-trx/probes.d</span><br><span>@@ -0,0 +1,7 @@</span><br><span style="color: hsl(120, 100%, 40%);">+provider osmo_bts_trx {</span><br><span style="color: hsl(120, 100%, 40%);">+ probe ul_data_start(int, int, int); /* trx_nr, ts_nr, fn */</span><br><span style="color: hsl(120, 100%, 40%);">+   probe ul_data_done(int, int, int); /* trx_nr, ts_nr, fn */</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+  probe dl_rts_start(int, int, int); /* trx_nr, ts_nr, fn */</span><br><span style="color: hsl(120, 100%, 40%);">+    probe dl_rts_done(int, int, int); /* trx_nr, ts_nr, fn */</span><br><span style="color: hsl(120, 100%, 40%);">+};</span><br><span>diff --git a/src/osmo-bts-trx/scheduler_trx.c b/src/osmo-bts-trx/scheduler_trx.c</span><br><span>index 1552a86..eca5601 100644</span><br><span>--- a/src/osmo-bts-trx/scheduler_trx.c</span><br><span>+++ b/src/osmo-bts-trx/scheduler_trx.c</span><br><span>@@ -47,6 +47,7 @@</span><br><span> </span><br><span> #include "l1_if.h"</span><br><span> #include "trx_if.h"</span><br><span style="color: hsl(120, 100%, 40%);">+#include "probes.h"</span><br><span> </span><br><span> #define SCHED_FH_PARAMS_FMT "hsn=%u, maio=%u, ma_len=%u"</span><br><span> #define SCHED_FH_PARAMS_VALS(ts) \</span><br><span>@@ -123,7 +124,9 @@</span><br><span>             /* process every TS of TRX */</span><br><span>                for (tn = 0; tn < ARRAY_SIZE(l1t->ts); tn++) {</span><br><span>                         /* ready-to-send */</span><br><span style="color: hsl(120, 100%, 40%);">+                   OSMO_BTS_TRX_DL_RTS_START(trx->nr, tn, sched_fn);</span><br><span>                         _sched_rts(l1t, tn, GSM_TDMA_FN_SUM(sched_fn, plink->u.osmotrx.rts_advance));</span><br><span style="color: hsl(120, 100%, 40%);">+                      OSMO_BTS_TRX_DL_RTS_DONE(trx->nr, tn, sched_fn);</span><br><span> </span><br><span>                      /* All other parameters to be set by _sched_dl_burst() */</span><br><span>                    br = (struct trx_dl_burst_req) {</span><br><span>diff --git a/src/osmo-bts-trx/trx_if.c b/src/osmo-bts-trx/trx_if.c</span><br><span>index 05167ca..27b34a8 100644</span><br><span>--- a/src/osmo-bts-trx/trx_if.c</span><br><span>+++ b/src/osmo-bts-trx/trx_if.c</span><br><span>@@ -49,6 +49,7 @@</span><br><span> #include "l1_if.h"</span><br><span> #include "trx_if.h"</span><br><span> #include "trx_provision_fsm.h"</span><br><span style="color: hsl(120, 100%, 40%);">+#include "probes.h"</span><br><span> </span><br><span> /*</span><br><span>  * socket helper functions</span><br><span>@@ -1100,7 +1101,9 @@</span><br><span>            hdr_ver, trx_data_desc_msg(&bi));</span><br><span> </span><br><span>    /* feed received burst into scheduler code */</span><br><span style="color: hsl(120, 100%, 40%);">+ OSMO_BTS_TRX_UL_DATA_START(l1h->phy_inst->trx->nr, bi.tn, bi.fn);</span><br><span>   trx_sched_route_burst_ind(&bi, &l1h->l1s);</span><br><span style="color: hsl(120, 100%, 40%);">+ OSMO_BTS_TRX_UL_DATA_DONE(l1h->phy_inst->trx->nr, bi.tn, bi.fn);</span><br><span> </span><br><span>        return 0;</span><br><span> }</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-bts/+/22641">change 22641</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-bts/+/22641"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: osmo-bts </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-Change-Id: Ibb4962253f1a195dc1a54405bac058ccb2545799 </div>
<div style="display:none"> Gerrit-Change-Number: 22641 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: laforge <laforge@osmocom.org> </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>