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