Zephyr API Documentation
2.7.0-rc2
A Scalable Open Source RTOS
|
Macros | |
#define | STACKSIZE (2048 + CONFIG_TEST_EXTRA_STACKSIZE) |
Functions | |
void | k_sys_fatal_error_handler (unsigned int reason, const z_arch_esf_t *esf) |
Fatal error policy handler. More... | |
void | check_input (const char *name, const char *input) |
void | print_loop (const char *name) |
void | alternate_thread (void) |
K_THREAD_STACK_DEFINE (alt_thread_stack_area,(2048+CONFIG_TEST_EXTRA_STACKSIZE)) | |
void | test_stackprot (void) |
test Stack Protector feature using canary More... | |
void | test_create_alt_thread (void) |
Test optional mechanism to detect stack overflow. More... | |
void | test_main (void) |
Variables | |
static ZTEST_BMEM int | count |
static ZTEST_BMEM int | ret = TC_PASS |
static struct k_thread | alt_thread_data |
#define STACKSIZE (2048 + CONFIG_TEST_EXTRA_STACKSIZE) |
This thread passes a long string to check_input function. It terminates due to stack overflow and reports "Stack Check Fail" when stack protection feature is enabled. Hence it will not execute the print_loop function and will not set ret to TC_FAIL.
void check_input | ( | const char * | name, |
const char * | input | ||
) |
check_input
This function copies the input string to a buffer of 16 characters and prints the name and buffer as a string. If the input string is longer than the buffer, an error condition is detected.
When stack protection feature is enabled (see prj.conf file), the system error handler is invoked and reports a "Stack Check Fail" error. When stack protection feature is not enabled, the system crashes with error like: Trying to execute code outside RAM or ROM.
K_THREAD_STACK_DEFINE | ( | alt_thread_stack_area | , |
(2048+CONFIG_TEST_EXTRA_STACKSIZE) | |||
) |
void print_loop | ( | const char * | name | ) |
print_loop
This function calls check_input 6 times with the input name and a short string, which is printed properly by check_input.
name | caller identification string |
Test optional mechanism to detect stack overflow.
Test that the system provides an optional mechanism to detect when supervisor threads overflow stack memory buffer.
test Stack Protector feature using canary
This is the test program to test stack protection using canary. The main thread starts a second thread, which generates a stack check failure. By design, the second thread will not complete its execution and will not set ret to TC_FAIL. This is the entry point to the test stack protection feature. It starts the thread that tests stack protection, then prints out a few messages before terminating.
|
static |
|
static |
|
static |