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);
|
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
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@ -114,6 +114,20 @@ fail_mem:
|
|||||||
return -ENOMEM;
|
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 1 if service is registered and has not been unregistered
|
||||||
* Returns 0 if service never registered, or has been unregistered
|
* Returns 0 if service never registered, or has been unregistered
|
||||||
*/
|
*/
|
||||||
|
@ -223,6 +223,7 @@ EXPERIMENTAL {
|
|||||||
rte_service_component_unregister;
|
rte_service_component_unregister;
|
||||||
rte_service_component_runstate_set;
|
rte_service_component_runstate_set;
|
||||||
rte_service_dump;
|
rte_service_dump;
|
||||||
|
rte_service_finalize;
|
||||||
rte_service_get_by_id;
|
rte_service_get_by_id;
|
||||||
rte_service_get_by_name;
|
rte_service_get_by_name;
|
||||||
rte_service_get_count;
|
rte_service_get_count;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user