service: remove experimental tags

This commit removes the experimental tags from the
service cores functions, they now become part of the
main DPDK API/ABI.

Signed-off-by: Harry van Haaren <harry.van.haaren@intel.com>
Acked-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
Acked-by: Thomas Monjalon <thomas@monjalon.net>
This commit is contained in:
Harry van Haaren 2018-04-05 14:15:46 +01:00 committed by Thomas Monjalon
parent 4754ceaa09
commit 60df571197
8 changed files with 93 additions and 186 deletions

View file

@ -187,7 +187,7 @@ F: test/test/test_mp_secondary.c
F: examples/multi_process/
F: doc/guides/sample_app_ug/multi_process.rst
Service Cores - EXPERIMENTAL
Service Cores
M: Harry van Haaren <harry.van.haaren@intel.com>
F: lib/librte_eal/common/include/rte_service.h
F: lib/librte_eal/common/include/rte_service_component.h

View file

@ -154,6 +154,13 @@ API Changes
Also, make sure to start the actual text at the margin.
=========================================================
* service cores: no longer marked as experimental.
The service cores functions are no longer marked as experimental, and have
become part of the normal DPDK API and ABI. Any future ABI changes will be
announced at least one release before the ABI change is made. There are no
ABI breaking changes planned.
* mempool: capability flags and related functions have been removed.
Flags ``MEMPOOL_F_CAPA_PHYS_CONTIG`` and

View file

@ -23,8 +23,6 @@ CFLAGS += -O3 $(shell pkg-config --cflags libdpdk)
LDFLAGS_SHARED = $(shell pkg-config --libs libdpdk)
LDFLAGS_STATIC = -Wl,-Bstatic $(shell pkg-config --static --libs libdpdk)
CFLAGS += -DALLOW_EXPERIMENTAL_API
build/$(APP)-shared: $(SRCS-y) Makefile $(PC_FILE) | build
$(CC) $(CFLAGS) $(SRCS-y) -o $@ $(LDFLAGS) $(LDFLAGS_SHARED)
@ -50,7 +48,6 @@ RTE_TARGET ?= x86_64-native-linuxapp-gcc
include $(RTE_SDK)/mk/rte.vars.mk
CFLAGS += -DALLOW_EXPERIMENTAL_API
CFLAGS += $(WERROR_FLAGS)
# workaround for a gcc bug with noreturn attribute

View file

@ -6,7 +6,6 @@
# To build this example as a standalone application with an already-installed
# DPDK instance, use 'make'
allow_experimental_apis = true
sources = files(
'main.c'
)

View file

@ -47,9 +47,6 @@ extern "C" {
#define RTE_SERVICE_CAP_MT_SAFE (1 << 0)
/**
* @warning
* @b EXPERIMENTAL: this API may change without prior notice
*
* Return the number of services registered.
*
* The number of services registered can be passed to *rte_service_get_by_id*,
@ -57,12 +54,9 @@ extern "C" {
*
* @return The number of services registered.
*/
uint32_t __rte_experimental rte_service_get_count(void);
uint32_t rte_service_get_count(void);
/**
* @warning
* @b EXPERIMENTAL: this API may change without prior notice
*
* Return the id of a service by name.
*
* This function provides the id of the service using the service name as
@ -84,24 +78,17 @@ uint32_t __rte_experimental rte_service_get_count(void);
* @retval -EINVAL Null *service_id* pointer provided
* @retval -ENODEV No such service registered
*/
int32_t __rte_experimental rte_service_get_by_name(const char *name,
uint32_t *service_id);
int32_t rte_service_get_by_name(const char *name, uint32_t *service_id);
/**
* @warning
* @b EXPERIMENTAL: this API may change without prior notice
*
* Return the name of the service.
*
* @return A pointer to the name of the service. The returned pointer remains
* in ownership of the service, and the application must not free it.
*/
const char __rte_experimental *rte_service_get_name(uint32_t id);
const char *rte_service_get_name(uint32_t id);
/**
* @warning
* @b EXPERIMENTAL: this API may change without prior notice
*
* Check if a service has a specific capability.
*
* This function returns if *service* has implements *capability*.
@ -109,13 +96,9 @@ const char __rte_experimental *rte_service_get_name(uint32_t id);
* @retval 1 Capability supported by this service instance
* @retval 0 Capability not supported by this service instance
*/
int32_t __rte_experimental rte_service_probe_capability(uint32_t id,
uint32_t capability);
int32_t rte_service_probe_capability(uint32_t id, uint32_t capability);
/**
* @warning
* @b EXPERIMENTAL: this API may change without prior notice
*
* Map or unmap a lcore to a service.
*
* Each core can be added or removed from running a specific service. This
@ -134,13 +117,10 @@ int32_t __rte_experimental rte_service_probe_capability(uint32_t id,
* @retval 0 lcore map updated successfully
* @retval -EINVAL An invalid service or lcore was provided.
*/
int32_t __rte_experimental rte_service_map_lcore_set(uint32_t service_id,
uint32_t lcore, uint32_t enable);
int32_t rte_service_map_lcore_set(uint32_t service_id, uint32_t lcore,
uint32_t enable);
/**
* @warning
* @b EXPERIMENTAL: this API may change without prior notice
*
* Retrieve the mapping of an lcore to a service.
*
* @param service_id the service to apply the lcore to
@ -150,13 +130,9 @@ int32_t __rte_experimental rte_service_map_lcore_set(uint32_t service_id,
* @retval 0 lcore is not mapped to service
* @retval -EINVAL An invalid service or lcore was provided.
*/
int32_t __rte_experimental rte_service_map_lcore_get(uint32_t service_id,
uint32_t lcore);
int32_t rte_service_map_lcore_get(uint32_t service_id, uint32_t lcore);
/**
* @warning
* @b EXPERIMENTAL: this API may change without prior notice
*
* Set the runstate of the service.
*
* Each service is either running or stopped. Setting a non-zero runstate
@ -168,12 +144,9 @@ int32_t __rte_experimental rte_service_map_lcore_get(uint32_t service_id,
* @retval 0 The service was successfully started
* @retval -EINVAL Invalid service id
*/
int32_t __rte_experimental rte_service_runstate_set(uint32_t id, uint32_t runstate);
int32_t rte_service_runstate_set(uint32_t id, uint32_t runstate);
/**
* @warning
* @b EXPERIMENTAL: this API may change without prior notice
*
* Get the runstate for the service with *id*. See *rte_service_runstate_set*
* for details of runstates. A service can call this function to ensure that
* the application has indicated that it will receive CPU cycles. Either a
@ -186,12 +159,9 @@ int32_t __rte_experimental rte_service_runstate_set(uint32_t id, uint32_t runsta
* @retval 0 Service is stopped
* @retval -EINVAL Invalid service id
*/
int32_t __rte_experimental rte_service_runstate_get(uint32_t id);
int32_t rte_service_runstate_get(uint32_t id);
/**
* @warning
* @b EXPERIMENTAL: this API may change without prior notice
*
* Enable or disable the check for a service-core being mapped to the service.
* An application can disable the check when takes the responsibility to run a
* service itself using *rte_service_run_iter_on_app_lcore*.
@ -202,13 +172,9 @@ int32_t __rte_experimental rte_service_runstate_get(uint32_t id);
* @retval 0 Success
* @retval -EINVAL Invalid service ID
*/
int32_t __rte_experimental rte_service_set_runstate_mapped_check(uint32_t id,
int32_t enable);
int32_t rte_service_set_runstate_mapped_check(uint32_t id, int32_t enable);
/**
* @warning
* @b EXPERIMENTAL: this API may change without prior notice
*
* This function runs a service callback from a non-service lcore.
*
* This function is designed to enable gradual porting to service cores, and
@ -241,13 +207,10 @@ int32_t __rte_experimental rte_service_set_runstate_mapped_check(uint32_t id,
* @retval -ENOEXEC Service is not in a run-able state
* @retval -EINVAL Invalid service id
*/
int32_t __rte_experimental rte_service_run_iter_on_app_lcore(uint32_t id,
int32_t rte_service_run_iter_on_app_lcore(uint32_t id,
uint32_t serialize_multithread_unsafe);
/**
* @warning
* @b EXPERIMENTAL: this API may change without prior notice
*
* Start a service core.
*
* Starting a core makes the core begin polling. Any services assigned to it
@ -259,12 +222,9 @@ int32_t __rte_experimental rte_service_run_iter_on_app_lcore(uint32_t id,
* @retval -EINVAL Failed to start core. The *lcore_id* passed in is not
* currently assigned to be a service core.
*/
int32_t __rte_experimental rte_service_lcore_start(uint32_t lcore_id);
int32_t rte_service_lcore_start(uint32_t lcore_id);
/**
* @warning
* @b EXPERIMENTAL: this API may change without prior notice
*
* Stop a service core.
*
* Stopping a core makes the core become idle, but remains assigned as a
@ -278,12 +238,9 @@ int32_t __rte_experimental rte_service_lcore_start(uint32_t lcore_id);
* The application must stop the service first, and then stop the
* lcore.
*/
int32_t __rte_experimental rte_service_lcore_stop(uint32_t lcore_id);
int32_t rte_service_lcore_stop(uint32_t lcore_id);
/**
* @warning
* @b EXPERIMENTAL: this API may change without prior notice
*
* Adds lcore to the list of service cores.
*
* This functions can be used at runtime in order to modify the service core
@ -294,12 +251,9 @@ int32_t __rte_experimental rte_service_lcore_stop(uint32_t lcore_id);
* @retval -EALREADY lcore is already added to the service core list
* @retval -EINVAL Invalid lcore provided
*/
int32_t __rte_experimental rte_service_lcore_add(uint32_t lcore);
int32_t rte_service_lcore_add(uint32_t lcore);
/**
* @warning
* @b EXPERIMENTAL: this API may change without prior notice
*
* Removes lcore from the list of service cores.
*
* This can fail if the core is not stopped, see *rte_service_core_stop*.
@ -308,12 +262,9 @@ int32_t __rte_experimental rte_service_lcore_add(uint32_t lcore);
* @retval -EBUSY Lcore is not stopped, stop service core before removing.
* @retval -EINVAL failed to add lcore to service core mask.
*/
int32_t __rte_experimental rte_service_lcore_del(uint32_t lcore);
int32_t rte_service_lcore_del(uint32_t lcore);
/**
* @warning
* @b EXPERIMENTAL: this API may change without prior notice
*
* Retrieve the number of service cores currently available.
*
* This function returns the integer count of service cores available. The
@ -325,24 +276,18 @@ int32_t __rte_experimental rte_service_lcore_del(uint32_t lcore);
*
* @return The number of service cores currently configured.
*/
int32_t __rte_experimental rte_service_lcore_count(void);
int32_t rte_service_lcore_count(void);
/**
* @warning
* @b EXPERIMENTAL: this API may change without prior notice
*
* Resets all service core mappings. This does not remove the service cores
* from duty, just unmaps all services / cores, and stops() the service cores.
* The runstate of services is not modified.
*
* @retval 0 Success
*/
int32_t __rte_experimental rte_service_lcore_reset_all(void);
int32_t rte_service_lcore_reset_all(void);
/**
* @warning
* @b EXPERIMENTAL: this API may change without prior notice
*
* Enable or disable statistics collection for *service*.
*
* This function enables per core, per-service cycle count collection.
@ -351,13 +296,9 @@ int32_t __rte_experimental rte_service_lcore_reset_all(void);
* @retval 0 Success
* @retval -EINVAL Invalid service pointer passed
*/
int32_t __rte_experimental rte_service_set_stats_enable(uint32_t id,
int32_t enable);
int32_t rte_service_set_stats_enable(uint32_t id, int32_t enable);
/**
* @warning
* @b EXPERIMENTAL: this API may change without prior notice
*
* Retrieve the list of currently enabled service cores.
*
* This function fills in an application supplied array, with each element
@ -373,12 +314,9 @@ int32_t __rte_experimental rte_service_set_stats_enable(uint32_t id,
* service core list. No items have been populated, call this function
* with a size of at least *rte_service_core_count* items.
*/
int32_t __rte_experimental rte_service_lcore_list(uint32_t array[], uint32_t n);
int32_t rte_service_lcore_list(uint32_t array[], uint32_t n);
/**
* @warning
* @b EXPERIMENTAL: this API may change without prior notice
*
* Get the numer of services running on the supplied lcore.
*
* @param lcore Id of the service core.
@ -386,19 +324,16 @@ int32_t __rte_experimental rte_service_lcore_list(uint32_t array[], uint32_t n);
* @retval -EINVAL Invalid lcore provided
* @retval -ENOTSUP The provided lcore is not a service core.
*/
int32_t __rte_experimental rte_service_lcore_count_services(uint32_t lcore);
int32_t rte_service_lcore_count_services(uint32_t lcore);
/**
* @warning
* @b EXPERIMENTAL: this API may change without prior notice
*
* Dumps any information available about the service. When id is UINT32_MAX,
* this function dumps info for all services.
*
* @retval 0 Statistics have been successfully dumped
* @retval -EINVAL Invalid service id provided
*/
int32_t __rte_experimental rte_service_dump(FILE *f, uint32_t id);
int32_t rte_service_dump(FILE *f, uint32_t id);
/**
* Returns the number of cycles that this service has consumed
@ -411,28 +346,22 @@ int32_t __rte_experimental rte_service_dump(FILE *f, uint32_t id);
#define RTE_SERVICE_ATTR_CALL_COUNT 1
/**
* @warning
* @b EXPERIMENTAL: this API may change without prior notice
*
* Get an attribute from a service.
*
* @retval 0 Success, the attribute value has been written to *attr_value*.
* -EINVAL Invalid id, attr_id or attr_value was NULL.
*/
int32_t __rte_experimental rte_service_attr_get(uint32_t id, uint32_t attr_id,
int32_t rte_service_attr_get(uint32_t id, uint32_t attr_id,
uint32_t *attr_value);
/**
* @warning
* @b EXPERIMENTAL: this API may change without prior notice
*
* Reset all attribute values of a service.
*
* @param id The service to reset all statistics of
* @retval 0 Successfully reset attributes
* -EINVAL Invalid service id provided
*/
int32_t __rte_experimental rte_service_attr_reset_all(uint32_t id);
int32_t rte_service_attr_reset_all(uint32_t id);
#ifdef __cplusplus
}

View file

@ -13,17 +13,11 @@
#include <rte_service.h>
/**
* @warning
* @b EXPERIMENTAL: this API may change without prior notice
*
* Signature of callback function to run a service.
*/
typedef int32_t (*rte_service_func)(void *args);
/**
* @warning
* @b EXPERIMENTAL: this API may change without prior notice
*
* The specification of a service.
*
* This struct contains metadata about the service itself, the callback
@ -47,9 +41,6 @@ struct rte_service_spec {
};
/**
* @warning
* @b EXPERIMENTAL: this API may change without prior notice
*
* Register a new service.
*
* A service represents a component that the requires CPU time periodically to
@ -73,14 +64,10 @@ struct rte_service_spec {
* -EINVAL Attempted to register an invalid service (eg, no callback
* set)
*/
int32_t __rte_experimental
rte_service_component_register(const struct rte_service_spec *spec,
uint32_t *service_id);
int32_t rte_service_component_register(const struct rte_service_spec *spec,
uint32_t *service_id);
/**
* @warning
* @b EXPERIMENTAL: this API may change without prior notice
*
* Unregister a service component.
*
* The service being removed must be stopped before calling this function.
@ -89,12 +76,9 @@ rte_service_component_register(const struct rte_service_spec *spec,
* @retval -EBUSY The service is currently running, stop the service before
* calling unregister. No action has been taken.
*/
int32_t __rte_experimental rte_service_component_unregister(uint32_t id);
int32_t rte_service_component_unregister(uint32_t id);
/**
* @warning
* @b EXPERIMENTAL: this API may change without prior notice
*
* Private function to allow EAL to initialized default mappings.
*
* This function iterates all the services, and maps then to the available
@ -107,12 +91,9 @@ int32_t __rte_experimental rte_service_component_unregister(uint32_t id);
* @retval -ENODEV Error in enabling service lcore on a service
* @retval -ENOEXEC Error when starting services
*/
int32_t __rte_experimental rte_service_start_with_defaults(void);
int32_t rte_service_start_with_defaults(void);
/**
* @warning
* @b EXPERIMENTAL: this API may change without prior notice
*
* Set the backend runstate of a component.
*
* This function allows services to be registered at startup, but not yet
@ -124,13 +105,9 @@ int32_t __rte_experimental rte_service_start_with_defaults(void);
*
* @retval 0 Success
*/
int32_t __rte_experimental rte_service_component_runstate_set(uint32_t id,
uint32_t runstate);
int32_t rte_service_component_runstate_set(uint32_t id, uint32_t runstate);
/**
* @warning
* @b EXPERIMENTAL: this API may change without prior notice
*
* Initialize the service library.
*
* In order to use the service library, it must be initialized. EAL initializes
@ -142,14 +119,11 @@ int32_t __rte_experimental rte_service_component_runstate_set(uint32_t id,
int32_t rte_service_init(void);
/**
* @warning
* @b EXPERIMENTAL: this API may change without prior notice
*
* @internal Free up the memory that has been initialized.
* This routine is to be invoked prior to process termination.
*
* @retval None
*/
void __rte_experimental rte_service_finalize(void);
void rte_service_finalize(void);
#endif /* _RTE_SERVICE_PRIVATE_H_ */

View file

@ -115,7 +115,7 @@ int32_t rte_service_init(void)
return -ENOMEM;
}
void __rte_experimental
void
rte_service_finalize(void)
{
if (!rte_service_library_initialized)
@ -161,7 +161,7 @@ service_mt_safe(struct rte_service_spec_impl *s)
return !!(s->spec.capabilities & RTE_SERVICE_CAP_MT_SAFE);
}
int32_t __rte_experimental
int32_t
rte_service_set_stats_enable(uint32_t id, int32_t enabled)
{
struct rte_service_spec_impl *s;
@ -175,7 +175,7 @@ rte_service_set_stats_enable(uint32_t id, int32_t enabled)
return 0;
}
int32_t __rte_experimental
int32_t
rte_service_set_runstate_mapped_check(uint32_t id, int32_t enabled)
{
struct rte_service_spec_impl *s;
@ -189,13 +189,13 @@ rte_service_set_runstate_mapped_check(uint32_t id, int32_t enabled)
return 0;
}
uint32_t __rte_experimental
uint32_t
rte_service_get_count(void)
{
return rte_service_count;
}
int32_t __rte_experimental
int32_t
rte_service_get_by_name(const char *name, uint32_t *service_id)
{
if (!service_id)
@ -213,7 +213,7 @@ rte_service_get_by_name(const char *name, uint32_t *service_id)
return -ENODEV;
}
const char * __rte_experimental
const char *
rte_service_get_name(uint32_t id)
{
struct rte_service_spec_impl *s;
@ -221,7 +221,7 @@ rte_service_get_name(uint32_t id)
return s->spec.name;
}
int32_t __rte_experimental
int32_t
rte_service_probe_capability(uint32_t id, uint32_t capability)
{
struct rte_service_spec_impl *s;
@ -229,7 +229,7 @@ rte_service_probe_capability(uint32_t id, uint32_t capability)
return !!(s->spec.capabilities & capability);
}
int32_t __rte_experimental
int32_t
rte_service_component_register(const struct rte_service_spec *spec,
uint32_t *id_ptr)
{
@ -262,7 +262,7 @@ rte_service_component_register(const struct rte_service_spec *spec,
return 0;
}
int32_t __rte_experimental
int32_t
rte_service_component_unregister(uint32_t id)
{
uint32_t i;
@ -283,7 +283,7 @@ rte_service_component_unregister(uint32_t id)
return 0;
}
int32_t __rte_experimental
int32_t
rte_service_component_runstate_set(uint32_t id, uint32_t runstate)
{
struct rte_service_spec_impl *s;
@ -298,7 +298,7 @@ rte_service_component_runstate_set(uint32_t id, uint32_t runstate)
return 0;
}
int32_t __rte_experimental
int32_t
rte_service_runstate_set(uint32_t id, uint32_t runstate)
{
struct rte_service_spec_impl *s;
@ -313,7 +313,7 @@ rte_service_runstate_set(uint32_t id, uint32_t runstate)
return 0;
}
int32_t __rte_experimental
int32_t
rte_service_runstate_get(uint32_t id)
{
struct rte_service_spec_impl *s;
@ -374,7 +374,7 @@ service_run(uint32_t i, struct core_state *cs, uint64_t service_mask)
return 0;
}
int32_t __rte_experimental rte_service_run_iter_on_app_lcore(uint32_t id,
int32_t rte_service_run_iter_on_app_lcore(uint32_t id,
uint32_t serialize_mt_unsafe)
{
/* run service on calling core, using all-ones as the service mask */
@ -430,7 +430,7 @@ rte_service_runner_func(void *arg)
return 0;
}
int32_t __rte_experimental
int32_t
rte_service_lcore_count(void)
{
int32_t count = 0;
@ -440,7 +440,7 @@ rte_service_lcore_count(void)
return count;
}
int32_t __rte_experimental
int32_t
rte_service_lcore_list(uint32_t array[], uint32_t n)
{
uint32_t count = rte_service_lcore_count();
@ -463,7 +463,7 @@ rte_service_lcore_list(uint32_t array[], uint32_t n)
return count;
}
int32_t __rte_experimental
int32_t
rte_service_lcore_count_services(uint32_t lcore)
{
if (lcore >= RTE_MAX_LCORE)
@ -476,7 +476,7 @@ rte_service_lcore_count_services(uint32_t lcore)
return __builtin_popcountll(cs->service_mask);
}
int32_t __rte_experimental
int32_t
rte_service_start_with_defaults(void)
{
/* create a default mapping from cores to services, then start the
@ -562,7 +562,7 @@ service_update(struct rte_service_spec *service, uint32_t lcore,
return 0;
}
int32_t __rte_experimental
int32_t
rte_service_map_lcore_set(uint32_t id, uint32_t lcore, uint32_t enabled)
{
struct rte_service_spec_impl *s;
@ -571,7 +571,7 @@ rte_service_map_lcore_set(uint32_t id, uint32_t lcore, uint32_t enabled)
return service_update(&s->spec, lcore, &on, 0);
}
int32_t __rte_experimental
int32_t
rte_service_map_lcore_get(uint32_t id, uint32_t lcore)
{
struct rte_service_spec_impl *s;
@ -597,7 +597,7 @@ set_lcore_state(uint32_t lcore, int32_t state)
lcore_states[lcore].is_service_core = (state == ROLE_SERVICE);
}
int32_t __rte_experimental
int32_t
rte_service_lcore_reset_all(void)
{
/* loop over cores, reset all to mask 0 */
@ -617,7 +617,7 @@ rte_service_lcore_reset_all(void)
return 0;
}
int32_t __rte_experimental
int32_t
rte_service_lcore_add(uint32_t lcore)
{
if (lcore >= RTE_MAX_LCORE)
@ -636,7 +636,7 @@ rte_service_lcore_add(uint32_t lcore)
return rte_eal_wait_lcore(lcore);
}
int32_t __rte_experimental
int32_t
rte_service_lcore_del(uint32_t lcore)
{
if (lcore >= RTE_MAX_LCORE)
@ -655,7 +655,7 @@ rte_service_lcore_del(uint32_t lcore)
return 0;
}
int32_t __rte_experimental
int32_t
rte_service_lcore_start(uint32_t lcore)
{
if (lcore >= RTE_MAX_LCORE)
@ -678,7 +678,7 @@ rte_service_lcore_start(uint32_t lcore)
return ret;
}
int32_t __rte_experimental
int32_t
rte_service_lcore_stop(uint32_t lcore)
{
if (lcore >= RTE_MAX_LCORE)
@ -708,7 +708,7 @@ rte_service_lcore_stop(uint32_t lcore)
return 0;
}
int32_t __rte_experimental
int32_t
rte_service_attr_get(uint32_t id, uint32_t attr_id, uint32_t *attr_value)
{
struct rte_service_spec_impl *s;
@ -753,7 +753,7 @@ rte_service_dump_one(FILE *f, struct rte_service_spec_impl *s,
s->cycles_spent, s->cycles_spent / calls);
}
int32_t __rte_experimental
int32_t
rte_service_attr_reset_all(uint32_t id)
{
struct rte_service_spec_impl *s;
@ -781,7 +781,8 @@ service_dump_calls_per_lcore(FILE *f, uint32_t lcore, uint32_t reset)
fprintf(f, "\n");
}
int32_t __rte_experimental rte_service_dump(FILE *f, uint32_t id)
int32_t
rte_service_dump(FILE *f, uint32_t id)
{
uint32_t i;
int print_one = (id != UINT32_MAX);

View file

@ -213,6 +213,34 @@ DPDK_18.05 {
global:
rte_log_set_level_pattern;
rte_service_attr_get;
rte_service_attr_reset_all;
rte_service_component_register;
rte_service_component_runstate_set;
rte_service_component_unregister;
rte_service_dump;
rte_service_finalize;
rte_service_get_by_id;
rte_service_get_by_name;
rte_service_get_count;
rte_service_get_name;
rte_service_lcore_add;
rte_service_lcore_count;
rte_service_lcore_count_services;
rte_service_lcore_del;
rte_service_lcore_list;
rte_service_lcore_reset_all;
rte_service_lcore_start;
rte_service_lcore_stop;
rte_service_map_lcore_get;
rte_service_map_lcore_set;
rte_service_probe_capability;
rte_service_run_iter_on_app_lcore;
rte_service_runstate_get;
rte_service_runstate_set;
rte_service_set_runstate_mapped_check;
rte_service_set_stats_enable;
rte_service_start_with_defaults;
} DPDK_18.02;
@ -269,34 +297,6 @@ EXPERIMENTAL {
rte_mp_request_sync;
rte_mp_request_async;
rte_mp_sendmsg;
rte_service_attr_get;
rte_service_attr_reset_all;
rte_service_component_register;
rte_service_component_unregister;
rte_service_component_runstate_set;
rte_service_dump;
rte_service_finalize;
rte_service_get_by_id;
rte_service_get_by_name;
rte_service_get_count;
rte_service_get_name;
rte_service_lcore_add;
rte_service_lcore_count;
rte_service_lcore_count_services;
rte_service_lcore_del;
rte_service_lcore_list;
rte_service_lcore_reset_all;
rte_service_lcore_start;
rte_service_lcore_stop;
rte_service_map_lcore_get;
rte_service_map_lcore_set;
rte_service_probe_capability;
rte_service_run_iter_on_app_lcore;
rte_service_runstate_get;
rte_service_runstate_set;
rte_service_set_runstate_mapped_check;
rte_service_set_stats_enable;
rte_service_start_with_defaults;
rte_socket_count;
rte_socket_id_by_idx;
rte_vfio_dma_map;