From d69d085883140fce1e356ccb69adfae4f0ab6869 Mon Sep 17 00:00:00 2001 From: Pavan Nikhilesh Date: Sat, 16 Mar 2019 20:27:36 +0000 Subject: [PATCH] eventdev: check timer adapter status before start Check if timer adapter is already started before starting it. Update the unit test accordingly. Signed-off-by: Pavan Nikhilesh Acked-by: Erik Gabriel Carrillo --- app/test/test_event_timer_adapter.c | 4 ++-- lib/librte_eventdev/rte_event_timer_adapter.c | 6 ++++++ lib/librte_eventdev/rte_event_timer_adapter.h | 1 + 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/app/test/test_event_timer_adapter.c b/app/test/test_event_timer_adapter.c index a45b7d1957..d4b78e093b 100644 --- a/app/test/test_event_timer_adapter.c +++ b/app/test/test_event_timer_adapter.c @@ -1015,8 +1015,8 @@ adapter_start(void) TEST_ASSERT_SUCCESS(_timdev_setup(180 * NSECPERSEC, NSECPERSEC / 10), "Failed to start adapter"); - TEST_ASSERT_SUCCESS(rte_event_timer_adapter_start(timdev), - "Failed to repeatedly start adapter"); + TEST_ASSERT_EQUAL(rte_event_timer_adapter_start(timdev), -EALREADY, + "Timer adapter started without call to stop."); return TEST_SUCCESS; } diff --git a/lib/librte_eventdev/rte_event_timer_adapter.c b/lib/librte_eventdev/rte_event_timer_adapter.c index 79070d4840..575da041ba 100644 --- a/lib/librte_eventdev/rte_event_timer_adapter.c +++ b/lib/librte_eventdev/rte_event_timer_adapter.c @@ -261,6 +261,12 @@ rte_event_timer_adapter_start(const struct rte_event_timer_adapter *adapter) ADAPTER_VALID_OR_ERR_RET(adapter, -EINVAL); FUNC_PTR_OR_ERR_RET(adapter->ops->start, -EINVAL); + if (adapter->data->started) { + EVTIM_LOG_ERR("event timer adapter %"PRIu8" already started", + adapter->data->id); + return -EALREADY; + } + ret = adapter->ops->start(adapter); if (ret < 0) return ret; diff --git a/lib/librte_eventdev/rte_event_timer_adapter.h b/lib/librte_eventdev/rte_event_timer_adapter.h index cc4518d41e..1b446c392b 100644 --- a/lib/librte_eventdev/rte_event_timer_adapter.h +++ b/lib/librte_eventdev/rte_event_timer_adapter.h @@ -339,6 +339,7 @@ rte_event_timer_adapter_get_info( * - -EINVAL if adapter identifier invalid * - -ENOENT if software adapter but no service core mapped * - -ENOTSUP if software adapter and more than one service core mapped + * - -EALREADY if adapter has already been started * * @note * The eventdev to which the event_timer_adapter is connected needs to -- 2.20.1