kernel_perf:add tos_task_find api
This commit is contained in:
@@ -154,7 +154,7 @@ struct k_task_st {
|
|||||||
* @retval #K_ERR_NONE return successfully.
|
* @retval #K_ERR_NONE return successfully.
|
||||||
*/
|
*/
|
||||||
__API__ k_err_t tos_task_create(k_task_t *task,
|
__API__ k_err_t tos_task_create(k_task_t *task,
|
||||||
char *name,
|
const char *name,
|
||||||
k_task_entry_t entry,
|
k_task_entry_t entry,
|
||||||
void *arg,
|
void *arg,
|
||||||
k_prio_t prio,
|
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.
|
* @retval #K_ERR_NONE return successfully.
|
||||||
*/
|
*/
|
||||||
__API__ k_err_t tos_task_create_dyn(k_task_t **task,
|
__API__ k_err_t tos_task_create_dyn(k_task_t **task,
|
||||||
char *name,
|
const char *name,
|
||||||
k_task_entry_t entry,
|
k_task_entry_t entry,
|
||||||
void *arg,
|
void *arg,
|
||||||
k_prio_t prio,
|
k_prio_t prio,
|
||||||
@@ -316,6 +316,15 @@ __API__ void tos_task_yield(void);
|
|||||||
*/
|
*/
|
||||||
__API__ k_task_t *tos_task_curr_task_get(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
|
#if TOS_CFG_TASK_STACK_DRAUGHT_DEPTH_DETACT_EN > 0u
|
||||||
|
|
||||||
|
@@ -80,7 +80,7 @@ __STATIC__ void task_mutex_release(k_task_t *task)
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
__API__ k_err_t tos_task_create(k_task_t *task,
|
__API__ k_err_t tos_task_create(k_task_t *task,
|
||||||
char *name,
|
const char *name,
|
||||||
k_task_entry_t entry,
|
k_task_entry_t entry,
|
||||||
void *arg,
|
void *arg,
|
||||||
k_prio_t prio,
|
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,
|
__API__ k_err_t tos_task_create_dyn(k_task_t **task,
|
||||||
char *name,
|
const char *name,
|
||||||
k_task_entry_t entry,
|
k_task_entry_t entry,
|
||||||
void *arg,
|
void *arg,
|
||||||
k_prio_t prio,
|
k_prio_t prio,
|
||||||
@@ -547,6 +547,28 @@ __API__ k_task_t *tos_task_curr_task_get(void)
|
|||||||
return curr_task;
|
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)
|
__API__ void tos_task_walkthru(k_task_walker_t walker)
|
||||||
{
|
{
|
||||||
TOS_CPU_CPSR_ALLOC();
|
TOS_CPU_CPSR_ALLOC();
|
||||||
|
@@ -93,14 +93,12 @@ TEST test_tos_task_create_destroy_dyn(void)
|
|||||||
err = tos_task_destroy(task);
|
err = tos_task_destroy(task);
|
||||||
ASSERT_EQ(err, K_ERR_OBJ_INVALID_ALLOC_TYPE);
|
ASSERT_EQ(err, K_ERR_OBJ_INVALID_ALLOC_TYPE);
|
||||||
|
|
||||||
err = tos_mmheap_check(&mm_info_after);
|
|
||||||
ASSERT_EQ(err, K_ERR_NONE);
|
|
||||||
|
|
||||||
err = tos_task_destroy_dyn(task);
|
err = tos_task_destroy_dyn(task);
|
||||||
ASSERT_EQ(err, K_ERR_NONE);
|
ASSERT_EQ(err, K_ERR_NONE);
|
||||||
|
|
||||||
err = tos_mmheap_check(&mm_info_after);
|
err = tos_mmheap_check(&mm_info_after);
|
||||||
ASSERT_EQ(err, K_ERR_NONE);
|
ASSERT_EQ(err, K_ERR_NONE);
|
||||||
|
ASSERT_EQ(mm_info_before.free, mm_info_after.free);
|
||||||
|
|
||||||
PASS();
|
PASS();
|
||||||
}
|
}
|
||||||
@@ -284,6 +282,32 @@ TEST test_tos_task_yeild(void)
|
|||||||
PASS();
|
PASS();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TEST test_tos_task_find(void)
|
||||||
|
{
|
||||||
|
k_err_t err;
|
||||||
|
k_task_t *task;
|
||||||
|
|
||||||
|
err = tos_task_create(&test_task_00, "test_task", test_task_entry,
|
||||||
|
NULL, TEST_TASK_PRIO_00,
|
||||||
|
test_task_stack_00, sizeof(test_task_stack_00),
|
||||||
|
0);
|
||||||
|
ASSERT_EQ(err, K_ERR_NONE);
|
||||||
|
|
||||||
|
task = tos_task_find(NULL);
|
||||||
|
ASSERT_EQ(task, NULL);
|
||||||
|
|
||||||
|
task = tos_task_find("not exist");
|
||||||
|
ASSERT_EQ(task, NULL);
|
||||||
|
|
||||||
|
task = tos_task_find("test_task");
|
||||||
|
ASSERT_EQ(task, &test_task_00);
|
||||||
|
|
||||||
|
err = tos_task_destroy(&test_task_00);
|
||||||
|
ASSERT_EQ(err, K_ERR_NONE);
|
||||||
|
|
||||||
|
PASS();
|
||||||
|
}
|
||||||
|
|
||||||
SUITE(suit_task)
|
SUITE(suit_task)
|
||||||
{
|
{
|
||||||
RUN_TEST(test_tos_task_create);
|
RUN_TEST(test_tos_task_create);
|
||||||
@@ -294,5 +318,6 @@ SUITE(suit_task)
|
|||||||
RUN_TEST(test_tos_task_suspend_resume);
|
RUN_TEST(test_tos_task_suspend_resume);
|
||||||
RUN_TEST(test_tos_task_prio_change);
|
RUN_TEST(test_tos_task_prio_change);
|
||||||
RUN_TEST(test_tos_task_yeild);
|
RUN_TEST(test_tos_task_yeild);
|
||||||
|
RUN_TEST(test_tos_task_find);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user