tests: msgq_usage: ensure all services started before client query
add semaphores to ensure all services started before client query. otherwise client query services may fail. Signed-off-by: Watson Zeng <zhiwei@synopsys.com>
This commit is contained in:
parent
4996604d45
commit
3e369f935c
1 changed files with 7 additions and 0 deletions
|
@ -23,6 +23,7 @@ K_THREAD_STACK_DEFINE(service1_stack, STACK_SIZE);
|
|||
K_THREAD_STACK_DEFINE(service2_stack, STACK_SIZE);
|
||||
K_THREAD_STACK_DEFINE(client_stack, STACK_SIZE);
|
||||
K_SEM_DEFINE(service_sema, 2, 2);
|
||||
K_SEM_DEFINE(service_started, 0, 2);
|
||||
K_SEM_DEFINE(test_continue, 0, 1);
|
||||
struct k_thread service_manager;
|
||||
struct k_thread service1;
|
||||
|
@ -60,9 +61,11 @@ static void service_manager_entry(void *p1, void *p2, void *p3)
|
|||
break;
|
||||
case REGISTER_SERVICE1:
|
||||
services[0] = (struct k_msgq *)data[1];
|
||||
k_sem_give(&service_started);
|
||||
break;
|
||||
case REGISTER_SERVICE2:
|
||||
services[1] = (struct k_msgq *)data[1];
|
||||
k_sem_give(&service_started);
|
||||
break;
|
||||
case SERVICE_QUIT:
|
||||
for (int i = 0; i < NUM_SERVICES; i++) {
|
||||
|
@ -184,6 +187,10 @@ static void client_entry(void *p1, void *p2, void *p3)
|
|||
client_data[0] = QUERRY_SERVICE;
|
||||
client_data[1] = (unsigned long)&client_msgq;
|
||||
|
||||
/* wait all services started */
|
||||
k_sem_take(&service_started, K_FOREVER);
|
||||
k_sem_take(&service_started, K_FOREVER);
|
||||
|
||||
/* query services */
|
||||
k_msgq_put(&manager_q, client_data, K_NO_WAIT);
|
||||
ret = k_msgq_get(&client_msgq, service_data, K_FOREVER);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue