service: fix memory leak with new function
The rte_service_finalize routine checks if service is initialized or not. If yes; releases internal memory for services and lcore states are freed. This routine is to be invoked at end of application termination. Fixes: 21698354c832 ("service: introduce service cores concept") Cc: stable@dpdk.org Signed-off-by: Vipin Varghese <vipin.varghese@intel.com> Acked-by: Harry van Haaren <harry.van.haaren@intel.com>
This commit is contained in:
parent
01aa0d95c8
commit
da23f0aa87
@ -429,6 +429,17 @@ int32_t rte_service_attr_get(uint32_t id, uint32_t attr_id,
|
||||
*/
|
||||
int32_t rte_service_attr_reset_all(uint32_t id);
|
||||
|
||||
/**
|
||||
* @warning
|
||||
* @b EXPERIMENTAL: this API may change without prior notice
|
||||
*
|
||||
* Free up the memory that has been initialized. This routine
|
||||
* is to be invoked prior to process termination.
|
||||
*
|
||||
* @retval None
|
||||
*/
|
||||
void rte_service_finalize(void);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
@ -114,6 +114,20 @@ fail_mem:
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
void rte_service_finalize(void)
|
||||
{
|
||||
if (!rte_service_library_initialized)
|
||||
return;
|
||||
|
||||
if (rte_services)
|
||||
rte_free(rte_services);
|
||||
|
||||
if (lcore_states)
|
||||
rte_free(lcore_states);
|
||||
|
||||
rte_service_library_initialized = 0;
|
||||
}
|
||||
|
||||
/* returns 1 if service is registered and has not been unregistered
|
||||
* Returns 0 if service never registered, or has been unregistered
|
||||
*/
|
||||
|
@ -223,6 +223,7 @@ EXPERIMENTAL {
|
||||
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;
|
||||
|
Loading…
x
Reference in New Issue
Block a user