/* * Copyright (c) 2017-2020 Intel Corporation. * * SPDX-License-Identifier: Apache-2.0 */ #include #include #include "footprint.h" #define STACK_SIZE 512 K_SEM_DEFINE(semaphore0, 0, 1); void thread_fn(void *p1, void *p2, void *p3) { k_sem_give(&semaphore0); k_sem_take(&semaphore0, K_FOREVER); } void run_semaphore(void) { k_tid_t sem0_tid; struct k_sem sem0; k_sem_init(&sem0, 0, 1); k_sem_give(&sem0); k_sem_take(&sem0, K_FOREVER); sem0_tid = k_thread_create(&my_thread, my_stack_area, STACK_SIZE, thread_fn, NULL, NULL, NULL, 0, 0, K_NO_WAIT); k_thread_join(sem0_tid, K_FOREVER); #ifdef CONFIG_USERSPACE sem0_tid = k_thread_create(&my_thread, my_stack_area, STACK_SIZE, thread_fn, NULL, NULL, NULL, 0, K_USER, K_FOREVER); k_object_access_grant(&semaphore0, sem0_tid); k_thread_start(sem0_tid); k_thread_join(sem0_tid, K_FOREVER); #endif }