Zephyr Project API 3.7.0
A Scalable Open Source RTOS
|
Data Structures | |
struct | timeout_info |
Macros | |
#define | SEM_INIT_VAL (0U) |
#define | SEM_MAX_VAL (10U) |
#define | THREAD_TEST_PRIORITY 0 |
#define | sem_give_from_isr(sema) irq_offload(isr_sem_give, (const void *)sema) |
#define | sem_take_from_isr(sema) irq_offload(isr_sem_take, (const void *)sema) |
#define | SEM_TIMEOUT (K_MSEC(100)) |
#define | STACK_SIZE (512 + CONFIG_TEST_EXTRA_STACK_SIZE) |
#define | TOTAL_THREADS_WAITING (5) |
#define | SEC2MS(s) ((s) * 1000) |
#define | QSEC2MS(s) ((s) * 250) |
#define | expect_k_sem_take(sem, timeout, exp, str) |
#define | expect_k_sem_init(sem, init, max, exp, str) |
#define | expect_k_sem_count_get(sem, exp, str) |
#define | expect_k_sem_take_nomsg(sem, timeout, exp) expect_k_sem_take((sem), (timeout), (exp), "k_sem_take incorrect return value: %d != %d") |
#define | expect_k_sem_init_nomsg(sem, init, max, exp) |
#define | expect_k_sem_count_get_nomsg(sem, exp) expect_k_sem_count_get((sem), (exp), "k_sem_count_get incorrect return value: %u != %u") |
Functions | |
K_SEM_DEFINE (statically_defined_sem,(0U),(10U)) | |
K_SEM_DEFINE (simple_sem,(0U),(10U)) | |
K_SEM_DEFINE (low_prio_sem,(0U),(10U)) | |
K_SEM_DEFINE (mid_prio_sem,(0U),(10U)) | |
K_SEM_DEFINE (high_prio_long_sem,(0U),(10U)) | |
K_SEM_DEFINE (high_prio_sem,(0U),(10U)) | |
K_SEM_DEFINE (multiple_thread_sem,(0U),(10U)) | |
K_THREAD_STACK_DEFINE (stack_1,(512+CONFIG_TEST_EXTRA_STACK_SIZE)) | |
K_THREAD_STACK_DEFINE (stack_2,(512+CONFIG_TEST_EXTRA_STACK_SIZE)) | |
K_THREAD_STACK_DEFINE (stack_3,(512+CONFIG_TEST_EXTRA_STACK_SIZE)) | |
K_THREAD_STACK_DEFINE (stack_4,(512+CONFIG_TEST_EXTRA_STACK_SIZE)) | |
K_THREAD_STACK_ARRAY_DEFINE (multiple_stack,(5),(512+CONFIG_TEST_EXTRA_STACK_SIZE)) | |
K_PIPE_DEFINE (timeout_info_pipe, sizeof(struct timeout_info) *(5), 4) | |
K_SEM_DEFINE (ksema,(0U),(10U)) | |
static | K_THREAD_STACK_DEFINE (tstack,(512+CONFIG_TEST_EXTRA_STACK_SIZE)) |
void | sem_give_task (void *p1, void *p2, void *p3) |
void | sem_reset_take_task (void *p1, void *p2, void *p3) |
void | isr_sem_give (const void *semaphore) |
static void | tsema_thread_thread (struct k_sem *psem) |
static void | tsema_thread_isr (struct k_sem *psem) |
void | isr_sem_take (const void *semaphore) |
void | sem_take_timeout_forever_helper (void *p1, void *p2, void *p3) |
void | sem_take_timeout_isr_helper (void *p1, void *p2, void *p3) |
void | sem_take_multiple_low_prio_helper (void *p1, void *p2, void *p3) |
void | sem_take_multiple_mid_prio_helper (void *p1, void *p2, void *p3) |
void | sem_take_multiple_high_prio_helper (void *p1, void *p2, void *p3) |
void | sem_queue_mutual_exclusion1 (void *p1, void *p2, void *p3) |
void | sem_queue_mutual_exclusion2 (void *p1, void *p2, void *p3) |
void | sem_take_multiple_high_prio_long_helper (void *p1, void *p2, void *p3) |
void | sem_multiple_threads_wait_helper (void *p1, void *p2, void *p3) |
ZTEST (semaphore, test_sem_multiple_threads_wait) | |
Test multiple semaphore take and give with wait. | |
ZTEST (semaphore, test_sem_measure_timeouts) | |
Test semaphore timeout period. | |
void | sem_measure_timeout_from_thread_helper (void *p1, void *p2, void *p3) |
ZTEST (semaphore, test_sem_measure_timeout_from_thread) | |
Test timeout of semaphore from thread. | |
void | sem_multiple_take_and_timeouts_helper (void *p1, void *p2, void *p3) |
ZTEST (semaphore_1cpu, test_sem_multiple_take_and_timeouts) | |
Test multiple semaphore take with timeouts. | |
void | sem_multi_take_timeout_diff_sem_helper (void *p1, void *p2, void *p3) |
ZTEST (semaphore, test_sem_multi_take_timeout_diff_sem) | |
Test sequence of multiple semaphore timeouts. | |
ZTEST (semaphore_1cpu, test_sem_queue_mutual_exclusion) | |
Test thread mutual exclusion by semaphore. | |
static void | thread_sem_give_null (void *p1, void *p2, void *p3) |
ZTEST_USER (semaphore_null_case, test_sem_give_null) | |
Test k_sem_give() API. | |
static void | thread_sem_init_null (void *p1, void *p2, void *p3) |
ZTEST_USER (semaphore_null_case, test_sem_init_null) | |
Test k_sem_init() API. | |
static void | thread_sem_take_null (void *p1, void *p2, void *p3) |
ZTEST_USER (semaphore_null_case, test_sem_take_null) | |
Test k_sem_take() API. | |
static void | thread_sem_reset_null (void *p1, void *p2, void *p3) |
ZTEST_USER (semaphore_null_case, test_sem_reset_null) | |
Test k_sem_reset() API. | |
static void | thread_sem_count_get_null (void *p1, void *p2, void *p3) |
ZTEST_USER (semaphore_null_case, test_sem_count_get_null) | |
Test k_sem_count_get() API. | |
void * | test_init (void) |
ZTEST_SUITE (semaphore, NULL, test_init, NULL, NULL, NULL) | |
ZTEST_SUITE (semaphore_1cpu, NULL, NULL, ztest_simple_1cpu_before, ztest_simple_1cpu_after, NULL) | |
ZTEST_SUITE (semaphore_null_case, NULL, test_init, NULL, NULL, NULL) | |
ZTEST_USER (semaphore, test_k_sem_define) | |
Test semaphore defined at compile time. | |
ZTEST_USER (semaphore, test_sem_thread2thread) | |
Test synchronization of threads with semaphore. | |
ZTEST (semaphore, test_sem_thread2isr) | |
Test synchronization between thread and irq. | |
ZTEST_USER (semaphore, test_k_sem_init) | |
Test semaphore initialization at running time. | |
ZTEST_USER (semaphore, test_sem_reset) | |
Test k_sem_reset() API. | |
ZTEST_USER (semaphore, test_sem_reset_waiting) | |
ZTEST_USER (semaphore, test_sem_count_get) | |
Test k_sem_count_get() API. | |
ZTEST (semaphore, test_sem_give_from_isr) | |
Test whether a semaphore can be given by an ISR. | |
ZTEST_USER (semaphore, test_sem_give_from_thread) | |
Test semaphore count when given by thread. | |
ZTEST_USER (semaphore, test_sem_take_no_wait) | |
Test if k_sem_take() decreases semaphore count. | |
ZTEST_USER (semaphore, test_sem_take_no_wait_fails) | |
Test k_sem_take() when there is no semaphore to take. | |
ZTEST_USER (semaphore, test_sem_take_timeout_fails) | |
Test a semaphore take operation with an unavailable semaphore. | |
ZTEST_USER (semaphore, test_sem_take_timeout) | |
Test the semaphore take operation with specified timeout. | |
ZTEST_USER (semaphore, test_sem_take_timeout_forever) | |
Test the semaphore take operation with forever wait. | |
ZTEST (semaphore_1cpu, test_sem_take_timeout_isr) | |
Test k_sem_take() with timeout in ISR context. | |
ZTEST_USER (semaphore, test_sem_take_multiple) | |
Test semaphore take operation by multiple threads. | |
ZTEST_USER (semaphore, test_k_sem_correct_count_limit) | |
Test the max value a semaphore can be given and taken. | |
ZTEST (semaphore, test_sem_give_take_from_isr) | |
Test semaphore give and take and its count from ISR. | |
Variables | |
uint32_t | critical_var |
struct k_thread sem_tid_1 sem_tid_2 sem_tid_3 | sem_tid_4 |
struct k_thread | multiple_tid [(5)] |
struct k_sem msg_sema | mut_sem |
struct k_thread | tdata |
#define expect_k_sem_count_get | ( | sem, | |
exp, | |||
str | |||
) |
#define expect_k_sem_count_get_nomsg | ( | sem, | |
exp | |||
) | expect_k_sem_count_get((sem), (exp), "k_sem_count_get incorrect return value: %u != %u") |
#define expect_k_sem_init | ( | sem, | |
init, | |||
max, | |||
exp, | |||
str | |||
) |
#define expect_k_sem_init_nomsg | ( | sem, | |
init, | |||
max, | |||
exp | |||
) |
#define expect_k_sem_take_nomsg | ( | sem, | |
timeout, | |||
exp | |||
) | expect_k_sem_take((sem), (timeout), (exp), "k_sem_take incorrect return value: %d != %d") |
#define sem_give_from_isr | ( | sema | ) | irq_offload(isr_sem_give, (const void *)sema) |
#define SEM_INIT_VAL (0U) |
#define SEM_MAX_VAL (10U) |
#define sem_take_from_isr | ( | sema | ) | irq_offload(isr_sem_take, (const void *)sema) |
#define SEM_TIMEOUT (K_MSEC(100)) |
#define STACK_SIZE (512 + CONFIG_TEST_EXTRA_STACK_SIZE) |
#define THREAD_TEST_PRIORITY 0 |
#define TOTAL_THREADS_WAITING (5) |
void isr_sem_give | ( | const void * | semaphore | ) |
void isr_sem_take | ( | const void * | semaphore | ) |
K_PIPE_DEFINE | ( | timeout_info_pipe | , |
sizeof(struct timeout_info) *(5) | , | ||
4 | |||
) |
K_SEM_DEFINE | ( | high_prio_long_sem | , |
(0U) | , | ||
(10U) | |||
) |
K_SEM_DEFINE | ( | high_prio_sem | , |
(0U) | , | ||
(10U) | |||
) |
K_SEM_DEFINE | ( | ksema | , |
(0U) | , | ||
(10U) | |||
) |
K_SEM_DEFINE | ( | low_prio_sem | , |
(0U) | , | ||
(10U) | |||
) |
K_SEM_DEFINE | ( | mid_prio_sem | , |
(0U) | , | ||
(10U) | |||
) |
K_SEM_DEFINE | ( | multiple_thread_sem | , |
(0U) | , | ||
(10U) | |||
) |
K_SEM_DEFINE | ( | simple_sem | , |
(0U) | , | ||
(10U) | |||
) |
K_SEM_DEFINE | ( | statically_defined_sem | , |
(0U) | , | ||
(10U) | |||
) |
K_THREAD_STACK_ARRAY_DEFINE | ( | multiple_stack | , |
(5) | , | ||
(512+CONFIG_TEST_EXTRA_STACK_SIZE) | |||
) |
K_THREAD_STACK_DEFINE | ( | stack_1 | , |
(512+CONFIG_TEST_EXTRA_STACK_SIZE) | |||
) |
K_THREAD_STACK_DEFINE | ( | stack_2 | , |
(512+CONFIG_TEST_EXTRA_STACK_SIZE) | |||
) |
K_THREAD_STACK_DEFINE | ( | stack_3 | , |
(512+CONFIG_TEST_EXTRA_STACK_SIZE) | |||
) |
K_THREAD_STACK_DEFINE | ( | stack_4 | , |
(512+CONFIG_TEST_EXTRA_STACK_SIZE) | |||
) |
|
static |
void sem_give_task | ( | void * | p1, |
void * | p2, | ||
void * | p3 | ||
) |
void sem_measure_timeout_from_thread_helper | ( | void * | p1, |
void * | p2, | ||
void * | p3 | ||
) |
void sem_multi_take_timeout_diff_sem_helper | ( | void * | p1, |
void * | p2, | ||
void * | p3 | ||
) |
void sem_multiple_take_and_timeouts_helper | ( | void * | p1, |
void * | p2, | ||
void * | p3 | ||
) |
void sem_multiple_threads_wait_helper | ( | void * | p1, |
void * | p2, | ||
void * | p3 | ||
) |
void sem_queue_mutual_exclusion1 | ( | void * | p1, |
void * | p2, | ||
void * | p3 | ||
) |
void sem_queue_mutual_exclusion2 | ( | void * | p1, |
void * | p2, | ||
void * | p3 | ||
) |
void sem_reset_take_task | ( | void * | p1, |
void * | p2, | ||
void * | p3 | ||
) |
void sem_take_multiple_high_prio_helper | ( | void * | p1, |
void * | p2, | ||
void * | p3 | ||
) |
void sem_take_multiple_high_prio_long_helper | ( | void * | p1, |
void * | p2, | ||
void * | p3 | ||
) |
void sem_take_multiple_low_prio_helper | ( | void * | p1, |
void * | p2, | ||
void * | p3 | ||
) |
void sem_take_multiple_mid_prio_helper | ( | void * | p1, |
void * | p2, | ||
void * | p3 | ||
) |
void sem_take_timeout_forever_helper | ( | void * | p1, |
void * | p2, | ||
void * | p3 | ||
) |
void sem_take_timeout_isr_helper | ( | void * | p1, |
void * | p2, | ||
void * | p3 | ||
) |
void * test_init | ( | void | ) |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
TESTPOINT: thread-isr sync via sema
|
static |
TESTPOINT: thread-thread sync via sema
ZTEST | ( | semaphore | , |
test_sem_give_from_isr | |||
) |
Test whether a semaphore can be given by an ISR.
ZTEST | ( | semaphore | , |
test_sem_give_take_from_isr | |||
) |
Test semaphore give and take and its count from ISR.
ZTEST | ( | semaphore | , |
test_sem_measure_timeout_from_thread | |||
) |
Test timeout of semaphore from thread.
ZTEST | ( | semaphore | , |
test_sem_measure_timeouts | |||
) |
Test semaphore timeout period.
ZTEST | ( | semaphore | , |
test_sem_multi_take_timeout_diff_sem | |||
) |
Test sequence of multiple semaphore timeouts.
ZTEST | ( | semaphore | , |
test_sem_multiple_threads_wait | |||
) |
Test multiple semaphore take and give with wait.
ZTEST | ( | semaphore | , |
test_sem_thread2isr | |||
) |
Test synchronization between thread and irq.
TESTPOINT: test k_sem_init sema
TESTPOINT: test K_SEM_DEFINE sema
ZTEST | ( | semaphore_1cpu | , |
test_sem_multiple_take_and_timeouts | |||
) |
Test multiple semaphore take with timeouts.
ZTEST | ( | semaphore_1cpu | , |
test_sem_queue_mutual_exclusion | |||
) |
Test thread mutual exclusion by semaphore.
Test is using to see how mutual exclusion is made by semaphore Made two threads, with two functions which use common variable. That variable is a critical section and can't be changed by two threads at the same time.
ZTEST | ( | semaphore_1cpu | , |
test_sem_take_timeout_isr | |||
) |
Test k_sem_take() with timeout in ISR context.
ZTEST_SUITE | ( | semaphore | , |
NULL | , | ||
test_init | , | ||
NULL | , | ||
NULL | , | ||
NULL | |||
) |
ZTEST_SUITE | ( | semaphore_1cpu | , |
NULL | , | ||
NULL | , | ||
ztest_simple_1cpu_before | , | ||
ztest_simple_1cpu_after | , | ||
NULL | |||
) |
ZTEST_SUITE | ( | semaphore_null_case | , |
NULL | , | ||
test_init | , | ||
NULL | , | ||
NULL | , | ||
NULL | |||
) |
ZTEST_USER | ( | semaphore | , |
test_k_sem_correct_count_limit | |||
) |
Test the max value a semaphore can be given and taken.
ZTEST_USER | ( | semaphore | , |
test_k_sem_define | |||
) |
Test semaphore defined at compile time.
ZTEST_USER | ( | semaphore | , |
test_k_sem_init | |||
) |
Test semaphore initialization at running time.
ZTEST_USER | ( | semaphore | , |
test_sem_count_get | |||
) |
Test k_sem_count_get() API.
TESTPOINT: semaphore count get upon init
TESTPOINT: sem count get after give
TESTPOINT: sem count get after take
TESTPOINT: semaphore give above limit
ZTEST_USER | ( | semaphore | , |
test_sem_give_from_thread | |||
) |
Test semaphore count when given by thread.
ZTEST_USER | ( | semaphore | , |
test_sem_reset | |||
) |
Test k_sem_reset() API.
TESTPOINT: semaphore take return -EBUSY
TESTPOINT: semaphore take return -EAGAIN
ZTEST_USER | ( | semaphore | , |
test_sem_reset_waiting | |||
) |
ZTEST_USER | ( | semaphore | , |
test_sem_take_multiple | |||
) |
Test semaphore take operation by multiple threads.
ZTEST_USER | ( | semaphore | , |
test_sem_take_no_wait | |||
) |
Test if k_sem_take() decreases semaphore count.
ZTEST_USER | ( | semaphore | , |
test_sem_take_no_wait_fails | |||
) |
Test k_sem_take() when there is no semaphore to take.
ZTEST_USER | ( | semaphore | , |
test_sem_take_timeout | |||
) |
Test the semaphore take operation with specified timeout.
ZTEST_USER | ( | semaphore | , |
test_sem_take_timeout_fails | |||
) |
Test a semaphore take operation with an unavailable semaphore.
ZTEST_USER | ( | semaphore | , |
test_sem_take_timeout_forever | |||
) |
Test the semaphore take operation with forever wait.
ZTEST_USER | ( | semaphore | , |
test_sem_thread2thread | |||
) |
Test synchronization of threads with semaphore.
TESTPOINT: test k_sem_init sema
TESTPOINT: test K_SEM_DEFINE sema
ZTEST_USER | ( | semaphore_null_case | , |
test_sem_count_get_null | |||
) |
Test k_sem_count_get() API.
Create a thread and set k_sem_count_get() input to NULL
ZTEST_USER | ( | semaphore_null_case | , |
test_sem_give_null | |||
) |
ZTEST_USER | ( | semaphore_null_case | , |
test_sem_init_null | |||
) |
ZTEST_USER | ( | semaphore_null_case | , |
test_sem_reset_null | |||
) |
ZTEST_USER | ( | semaphore_null_case | , |
test_sem_take_null | |||
) |
uint32_t critical_var |
struct k_thread multiple_tid[(5)] |
struct k_sem msg_sema mut_sem |
struct k_thread tdata |