Zephyr API Documentation
3.0.0
A Scalable Open Source RTOS
|
|
3.0.0 |
#include <ztest.h>
Macros | |
#define | TIMEOUT 500 |
#define | STACK_SIZE (512 + CONFIG_TEST_EXTRA_STACKSIZE) |
#define | THREAD_HIGH_PRIORITY 1 |
#define | THREAD_MID_PRIORITY 3 |
#define | THREAD_LOW_PRIORITY 5 |
Functions | |
K_MUTEX_DEFINE (kmutex) | |
static | K_THREAD_STACK_DEFINE (tstack,(512+CONFIG_TEST_EXTRA_STACKSIZE)) |
static | K_THREAD_STACK_DEFINE (tstack2,(512+CONFIG_TEST_EXTRA_STACKSIZE)) |
static | K_THREAD_STACK_DEFINE (tstack3,(512+CONFIG_TEST_EXTRA_STACKSIZE)) |
static void | tThread_entry_lock_forever (void *p1, void *p2, void *p3) |
static void | tThread_entry_lock_no_wait (void *p1, void *p2, void *p3) |
static void | tThread_entry_lock_timeout_fail (void *p1, void *p2, void *p3) |
static void | tThread_entry_lock_timeout_pass (void *p1, void *p2, void *p3) |
static void | tmutex_test_lock (struct k_mutex *pmutex, void(*entry_fn)(void *, void *, void *)) |
static void | tmutex_test_lock_timeout (struct k_mutex *pmutex, void(*entry_fn)(void *, void *, void *)) |
static void | tmutex_test_lock_unlock (struct k_mutex *pmutex) |
static void | tThread_T1_priority_inheritance (void *p1, void *p2, void *p3) |
static void | tThread_T2_priority_inheritance (void *p1, void *p2, void *p3) |
static void | tThread_lock_with_time_period (void *p1, void *p2, void *p3) |
static void | tThread_waiter (void *p1, void *p2, void *p3) |
void | test_mutex_reent_lock_forever (void) |
void | test_mutex_reent_lock_no_wait (void) |
void | test_mutex_reent_lock_timeout_fail (void) |
void | test_mutex_reent_lock_timeout_pass (void) |
void | test_mutex_lock_unlock (void) |
void | test_mutex_recursive (void) |
Test recursive mutex. More... | |
void | test_mutex_priority_inheritance (void) |
Test mutex's priority inheritance mechanism. More... | |
void | test_main (void) |
Variables | |
static ZTEST_DMEM int | case_type |
static ZTEST_DMEM int | thread_ret = TC_FAIL |
static struct k_mutex | mutex |
static struct k_thread | tdata |
static struct k_thread | tdata2 |
static struct k_thread | tdata3 |
#define STACK_SIZE (512 + CONFIG_TEST_EXTRA_STACKSIZE) |
#define THREAD_HIGH_PRIORITY 1 |
#define THREAD_LOW_PRIORITY 5 |
#define THREAD_MID_PRIORITY 3 |
#define TIMEOUT 500 |
K_MUTEX_DEFINE | ( | kmutex | ) |
TESTPOINT: init via K_MUTEX_DEFINE
|
static |
|
static |
|
static |
void test_main | ( | void | ) |
test case main entry
void test_mutex_lock_unlock | ( | void | ) |
TESTPOINT: test k_mutex_init mutex
TESTPOINT: test K_MUTEX_DEFINE mutex
void test_mutex_priority_inheritance | ( | void | ) |
Test mutex's priority inheritance mechanism.
To verify mutex provide priority inheritance to prevent prority inversion, and there are 3 cases need to run. The thread T1 hold the mutex first and cases list as below:
TESTPOINT: run test case 1, given priority T1 < T2
TESTPOINT: The current thread does not own the mutex.
TESTPOINT: run test case 2, given priority T1 > T2, this means priority inheritance won't happen.
TESTPOINT: run test case 3, given priority T1 < T3 < T2, but t2 do not get mutex due to timeout.
void test_mutex_recursive | ( | void | ) |
Test recursive mutex.
To verify that getting a lock of a mutex already locked will succeed and waiters will be unblocked only when the number of locks reaches zero.
TESTPOINT: when mutex has no owner, we cannot unlock it
TESTPOINT: lock the mutex recursively
TESTPOINT: unlock the mutex recursively
TESTPOINT: waiter thread got the mutex
void test_mutex_reent_lock_forever | ( | void | ) |
TESTPOINT: test k_mutex_init mutex
TESTPOINT: test K_MUTEX_DEFINE mutex
void test_mutex_reent_lock_no_wait | ( | void | ) |
TESTPOINT: test k_mutex_init mutex
TESTPOINT: test K_MUTEX_DEFINE mutex
void test_mutex_reent_lock_timeout_fail | ( | void | ) |
TESTPOINT: test k_mutex_init mutex
TESTPOINT: test K_MUTEX_DEFINE mutex
void test_mutex_reent_lock_timeout_pass | ( | void | ) |
TESTPOINT: test k_mutex_init mutex
TESTPOINT: test K_MUTEX_DEFINE mutex
|
static |
|
static |
TESTPOINT: test k_mutex_init mutex
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |