kernel_perf: update to 2.5.1 version
This commit is contained in:
@@ -136,6 +136,10 @@ __API__ k_err_t tos_timer_create(k_timer_t *tmr,
|
||||
|
||||
TOS_OBJ_INIT(tmr, KNL_OBJ_TYPE_TIMER);
|
||||
|
||||
#if TOS_CFG_OBJ_DYNAMIC_CREATE_EN > 0u
|
||||
knl_object_alloc_set_static(&tmr->knl_obj);
|
||||
#endif
|
||||
|
||||
return K_ERR_NONE;
|
||||
}
|
||||
|
||||
@@ -144,6 +148,12 @@ __API__ k_err_t tos_timer_destroy(k_timer_t *tmr)
|
||||
TOS_PTR_SANITY_CHECK(tmr);
|
||||
TOS_OBJ_VERIFY(tmr, KNL_OBJ_TYPE_TIMER);
|
||||
|
||||
#if TOS_CFG_OBJ_DYNAMIC_CREATE_EN > 0u
|
||||
if (!knl_object_alloc_is_static(&tmr->knl_obj)) {
|
||||
return K_ERR_OBJ_INVALID_ALLOC_TYPE;
|
||||
}
|
||||
#endif
|
||||
|
||||
if (tmr->state == TIMER_STATE_UNUSED) {
|
||||
return K_ERR_TIMER_INACTIVE;
|
||||
}
|
||||
@@ -153,9 +163,73 @@ __API__ k_err_t tos_timer_destroy(k_timer_t *tmr)
|
||||
}
|
||||
|
||||
timer_reset(tmr);
|
||||
|
||||
#if TOS_CFG_OBJ_DYNAMIC_CREATE_EN > 0u
|
||||
knl_object_alloc_reset(&tmr->knl_obj);
|
||||
#endif
|
||||
|
||||
return K_ERR_NONE;
|
||||
}
|
||||
|
||||
#if TOS_CFG_OBJ_DYNAMIC_CREATE_EN > 0u
|
||||
|
||||
__API__ k_err_t tos_timer_create_dyn(k_timer_t **tmr,
|
||||
k_tick_t delay,
|
||||
k_tick_t period,
|
||||
k_timer_callback_t callback,
|
||||
void *cb_arg,
|
||||
k_opt_t opt)
|
||||
{
|
||||
k_err_t err;
|
||||
k_timer_t *the_timer;
|
||||
|
||||
TOS_PTR_SANITY_CHECK(tmr);
|
||||
TOS_PTR_SANITY_CHECK(callback);
|
||||
|
||||
the_timer = tos_mmheap_calloc(1, sizeof(k_timer_t));
|
||||
if (!the_timer) {
|
||||
return K_ERR_OUT_OF_MEMORY;
|
||||
}
|
||||
|
||||
err = tos_timer_create(the_timer, delay, period, callback, cb_arg, opt);
|
||||
if (err != K_ERR_NONE) {
|
||||
tos_mmheap_free(the_timer);
|
||||
return err;
|
||||
}
|
||||
|
||||
knl_object_alloc_set_dynamic(&the_timer->knl_obj);
|
||||
|
||||
*tmr = the_timer;
|
||||
|
||||
return K_ERR_NONE;
|
||||
}
|
||||
|
||||
__API__ k_err_t tos_timer_destroy_dyn(k_timer_t *tmr)
|
||||
{
|
||||
TOS_PTR_SANITY_CHECK(tmr);
|
||||
TOS_OBJ_VERIFY(tmr, KNL_OBJ_TYPE_TIMER);
|
||||
|
||||
if (!knl_object_alloc_is_dynamic(&tmr->knl_obj)) {
|
||||
return K_ERR_OBJ_INVALID_ALLOC_TYPE;
|
||||
}
|
||||
|
||||
if (tmr->state == TIMER_STATE_UNUSED) {
|
||||
return K_ERR_TIMER_INACTIVE;
|
||||
}
|
||||
|
||||
if (tmr->state == TIMER_STATE_RUNNING) {
|
||||
timer_takeoff(tmr);
|
||||
}
|
||||
|
||||
timer_reset(tmr);
|
||||
|
||||
tos_mmheap_free(tmr);
|
||||
|
||||
return K_ERR_NONE;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
__API__ k_err_t tos_timer_start(k_timer_t *tmr)
|
||||
{
|
||||
TOS_PTR_SANITY_CHECK(tmr);
|
||||
|
Reference in New Issue
Block a user