kernel_perf:add tos_task_find api

This commit is contained in:
mculover666
2022-06-01 16:53:42 +08:00
parent 30832d6e0f
commit e38c8775ac
3 changed files with 70 additions and 14 deletions

View File

@@ -154,7 +154,7 @@ struct k_task_st {
* @retval #K_ERR_NONE return successfully.
*/
__API__ k_err_t tos_task_create(k_task_t *task,
char *name,
const char *name,
k_task_entry_t entry,
void *arg,
k_prio_t prio,
@@ -197,7 +197,7 @@ __API__ k_err_t tos_task_destroy(k_task_t *task);
* @retval #K_ERR_NONE return successfully.
*/
__API__ k_err_t tos_task_create_dyn(k_task_t **task,
char *name,
const char *name,
k_task_entry_t entry,
void *arg,
k_prio_t prio,
@@ -316,6 +316,15 @@ __API__ void tos_task_yield(void);
*/
__API__ k_task_t *tos_task_curr_task_get(void);
/**
* @brief Find task by task name.
* Find task by task name.
*
* @param name the name of the task.
*
* @return the matched task handler
*/
__API__ k_task_t *tos_task_find(const char *name);
#if TOS_CFG_TASK_STACK_DRAUGHT_DEPTH_DETACT_EN > 0u

View File

@@ -80,7 +80,7 @@ __STATIC__ void task_mutex_release(k_task_t *task)
#endif
__API__ k_err_t tos_task_create(k_task_t *task,
char *name,
const char *name,
k_task_entry_t entry,
void *arg,
k_prio_t prio,
@@ -234,7 +234,7 @@ __KNL__ void task_free_all(void)
}
__API__ k_err_t tos_task_create_dyn(k_task_t **task,
char *name,
const char *name,
k_task_entry_t entry,
void *arg,
k_prio_t prio,
@@ -547,6 +547,28 @@ __API__ k_task_t *tos_task_curr_task_get(void)
return curr_task;
}
__API__ k_task_t *tos_task_find(const char *name)
{
TOS_CPU_CPSR_ALLOC();
k_task_t *task;
if (!strlen(name)) {
return K_NULL;
}
TOS_CPU_INT_DISABLE();
TOS_LIST_FOR_EACH_ENTRY(task, k_task_t, stat_list, &k_stat_list) {
if (strncmp(task->name, name, K_TASK_NAME_LEN_MAX) == 0) {
TOS_CPU_INT_ENABLE();
return task;
}
}
TOS_CPU_INT_ENABLE();
return K_NULL;
}
__API__ void tos_task_walkthru(k_task_walker_t walker)
{
TOS_CPU_CPSR_ALLOC();