Files including <zephyr/kernel.h> do not have to include <zephyr/zephyr.h>, a shim to <zephyr/kernel.h>. Signed-off-by: Gerard Marull-Paretas <gerard.marull@nordicsemi.no>
53 lines
946 B
C
53 lines
946 B
C
/*
|
|
* Copyright (c) 2017-2020 Intel Corporation.
|
|
*
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
*/
|
|
|
|
#include <zephyr/kernel.h>
|
|
#include <ksched.h>
|
|
|
|
#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
|
|
}
|