return ret;
}
-struct rte_event_timer_adapter * __rte_experimental
+struct rte_event_timer_adapter *
rte_event_timer_adapter_create(const struct rte_event_timer_adapter_conf *conf)
{
return rte_event_timer_adapter_create_ext(conf, default_port_conf_cb,
NULL);
}
-struct rte_event_timer_adapter * __rte_experimental
+struct rte_event_timer_adapter *
rte_event_timer_adapter_create_ext(
const struct rte_event_timer_adapter_conf *conf,
rte_event_timer_adapter_port_conf_cb_t conf_cb,
return NULL;
}
-int __rte_experimental
+int
rte_event_timer_adapter_get_info(const struct rte_event_timer_adapter *adapter,
struct rte_event_timer_adapter_info *adapter_info)
{
return 0;
}
-int __rte_experimental
+int
rte_event_timer_adapter_start(const struct rte_event_timer_adapter *adapter)
{
int ret;
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;
return 0;
}
-int __rte_experimental
+int
rte_event_timer_adapter_stop(const struct rte_event_timer_adapter *adapter)
{
int ret;
return 0;
}
-struct rte_event_timer_adapter * __rte_experimental
+struct rte_event_timer_adapter *
rte_event_timer_adapter_lookup(uint16_t adapter_id)
{
char name[DATA_MZ_NAME_MAX_LEN];
return adapter;
}
-int __rte_experimental
+int
rte_event_timer_adapter_free(struct rte_event_timer_adapter *adapter)
{
int ret;
return 0;
}
-int __rte_experimental
+int
rte_event_timer_adapter_service_id_get(struct rte_event_timer_adapter *adapter,
uint32_t *service_id)
{
return adapter->data->service_inited ? 0 : -ESRCH;
}
-int __rte_experimental
+int
rte_event_timer_adapter_stats_get(struct rte_event_timer_adapter *adapter,
struct rte_event_timer_adapter_stats *stats)
{
return adapter->ops->stats_get(adapter, stats);
}
-int __rte_experimental
+int
rte_event_timer_adapter_stats_reset(struct rte_event_timer_adapter *adapter)
{
ADAPTER_VALID_OR_ERR_RET(adapter, -EINVAL);
* immediate expiry value, so that we process it again on the
* next iteration.
*/
- rte_timer_reset_sync(tim, SINGLE, 0, rte_lcore_id(),
+ rte_timer_reset_sync(tim, 0, SINGLE, rte_lcore_id(),
sw_event_timer_cb, evtim);
sw_data->stats.evtim_retry_count++;
static int
sw_event_timer_adapter_service_func(void *arg)
{
- int ret, i, num_msgs;
+ int i, num_msgs;
uint64_t cycles, opaque;
uint16_t nb_evs_flushed = 0;
uint16_t nb_evs_invalid = 0;
struct rte_timer *tim = NULL;
struct msg *msg, *msgs[NB_OBJS];
- RTE_SET_USED(ret);
-
adapter = arg;
sw_data = adapter->data->adapter_priv;
(void **)msgs, NB_OBJS, NULL);
for (i = 0; i < num_msgs; i++) {
+ int ret = 0;
+
+ RTE_SET_USED(ret);
+
msg = msgs[i];
evtim = msg->evtim;
.cancel_burst = sw_event_timer_cancel_burst,
};
-RTE_INIT(event_timer_adapter_init_log);
-static void
-event_timer_adapter_init_log(void)
+RTE_INIT(event_timer_adapter_init_log)
{
evtim_logtype = rte_log_register("lib.eventdev.adapter.timer");
if (evtim_logtype >= 0)