From 44bfa4c7fd878eb5c9076184664e1006fe26be20 Mon Sep 17 00:00:00 2001 From: Harald Welte Date: Sun, 21 Oct 2018 13:05:08 +0200 Subject: scheduler_trx.c: Switch to osmo_timerfd() of libosmocore >= 0.12.0 Change-Id: I721d493659fde57eca1543b2e63171df1be1279d Fixes: Coverity CID#178646 --- configure.ac | 12 +++---- src/osmo-bts-trx/scheduler_trx.c | 70 +++------------------------------------- 2 files changed, 10 insertions(+), 72 deletions(-) diff --git a/configure.ac b/configure.ac index 38e6713c..f2d4f846 100644 --- a/configure.ac +++ b/configure.ac @@ -62,12 +62,12 @@ then fi dnl checks for libraries -PKG_CHECK_MODULES(LIBOSMOCORE, libosmocore >= 0.11.0) -PKG_CHECK_MODULES(LIBOSMOVTY, libosmovty >= 0.11.0) -PKG_CHECK_MODULES(LIBOSMOGSM, libosmogsm >= 0.11.0) -PKG_CHECK_MODULES(LIBOSMOCTRL, libosmoctrl >= 0.11.0) -PKG_CHECK_MODULES(LIBOSMOCODEC, libosmocodec >= 0.11.0) -PKG_CHECK_MODULES(LIBOSMOCODING, libosmocoding >= 0.11.0) +PKG_CHECK_MODULES(LIBOSMOCORE, libosmocore >= 0.12.0) +PKG_CHECK_MODULES(LIBOSMOVTY, libosmovty >= 0.12.0) +PKG_CHECK_MODULES(LIBOSMOGSM, libosmogsm >= 0.12.0) +PKG_CHECK_MODULES(LIBOSMOCTRL, libosmoctrl >= 0.12.0) +PKG_CHECK_MODULES(LIBOSMOCODEC, libosmocodec >= 0.12.0) +PKG_CHECK_MODULES(LIBOSMOCODING, libosmocoding >= 0.12.0) PKG_CHECK_MODULES(LIBOSMOABIS, libosmoabis >= 0.5.0) PKG_CHECK_MODULES(LIBOSMOTRAU, libosmotrau >= 0.5.0) diff --git a/src/osmo-bts-trx/scheduler_trx.c b/src/osmo-bts-trx/scheduler_trx.c index 4bac2353..fa3aed22 100644 --- a/src/osmo-bts-trx/scheduler_trx.c +++ b/src/osmo-bts-trx/scheduler_trx.c @@ -1434,68 +1434,6 @@ static inline void normalize_timespec(struct timespec *ts) ts->tv_nsec = ts->tv_nsec % 1000000000; } -/*! disable the osmocom-wrapped timerfd */ -/* FIXME: Use libosmocore after release with Ibeffba7c997252c003723bcd5d14122c4ded2fe7 was made */ -static int timer_ofd_disable(struct osmo_fd *ofd) -{ - const struct itimerspec its_null = { - .it_value = { 0, 0 }, - .it_interval = { 0, 0 }, - }; - return timerfd_settime(ofd->fd, 0, &its_null, NULL); -} - -/*! schedule the osmcoom-wrapped timerfd to occur first at \a first, then periodically at \a interval - * \param[in] ofd Osmocom wrapped timerfd - * \param[in] first Relative time at which the timer should first execute (NULL = \a interval) - * \param[in] interval Time interval at which subsequent timer shall fire - * \returns 0 on success; negative on error */ -/* FIXME: Use libosmocore after release with Ibeffba7c997252c003723bcd5d14122c4ded2fe7 was made */ -static int timer_ofd_schedule(struct osmo_fd *ofd, const struct timespec *first, - const struct timespec *interval) -{ - struct itimerspec its; - - if (ofd->fd < 0) - return -EINVAL; - - /* first expiration */ - if (first) - its.it_value = *first; - else - its.it_value = *interval; - /* repeating interval */ - its.it_interval = *interval; - - return timerfd_settime(ofd->fd, 0, &its, NULL); -} - -/*! setup osmocom-wrapped timerfd - * \param[inout] ofd Osmocom-wrapped timerfd on which to operate - * \param[in] cb Call-back function called when timerfd becomes readable - * \param[in] data Opaque data to be passed on to call-back - * \returns 0 on success; negative on error - * - * We simply initialize the data structures here, but do not yet - * schedule the timer. - */ -/* FIXME: Use libosmocore after release with Ibeffba7c997252c003723bcd5d14122c4ded2fe7 was made */ -static int timer_ofd_setup(struct osmo_fd *ofd, int (*cb)(struct osmo_fd *, unsigned int), void *data) -{ - ofd->cb = cb; - ofd->data = data; - ofd->when = BSC_FD_READ; - - if (ofd->fd < 0) { - ofd->fd = timerfd_create(CLOCK_MONOTONIC, TFD_NONBLOCK); - if (ofd->fd < 0) - return ofd->fd; - - osmo_fd_register(ofd); - } - return 0; -} - /*! Increment a GSM frame number modulo GSM_HYPERFRAME */ #define INCREMENT_FN(fn) (fn) = (((fn) + 1) % GSM_HYPERFRAME) @@ -1557,7 +1495,7 @@ static int trx_fn_timer_cb(struct osmo_fd *ofd, unsigned int what) return 0; no_clock: - timer_ofd_disable(&tcs->fn_timer_ofd); + osmo_timerfd_disable(&tcs->fn_timer_ofd); transceiver_available = 0; bts_shutdown(bts, "No clock from osmo-trx"); @@ -1575,8 +1513,8 @@ static int trx_setup_clock(struct gsm_bts *bts, struct osmo_trx_clock_state *tcs trx_sched_fn(bts, tcs->last_fn_timer.fn); /* schedule first FN clock timer */ - timer_ofd_setup(&tcs->fn_timer_ofd, trx_fn_timer_cb, bts); - timer_ofd_schedule(&tcs->fn_timer_ofd, NULL, interval); + osmo_timerfd_setup(&tcs->fn_timer_ofd, trx_fn_timer_cb, bts); + osmo_timerfd_schedule(&tcs->fn_timer_ofd, NULL, interval); tcs->last_fn_timer.tv = *tv_now; tcs->last_clk_ind.tv = *tv_now; @@ -1666,7 +1604,7 @@ int trx_sched_clock(struct gsm_bts *bts, uint32_t fn) normalize_timespec(&first); LOGP(DL1C, LOGL_NOTICE, "We were %d FN faster than TRX, compensating\n", -elapsed_fn); /* set time to the time our next FN has to be transmitted */ - timer_ofd_schedule(&tcs->fn_timer_ofd, &first, &interval); + osmo_timerfd_schedule(&tcs->fn_timer_ofd, &first, &interval); return 0; } -- cgit v1.2.3