| /* |
| * Copyright (c) 2023 Intel Corporation. |
| * |
| * SPDX-License-Identifier: Apache-2.0 |
| */ |
| |
| /* |
| * This code demonstrates the use of threads and requires object |
| * relocation support. |
| */ |
| |
| #include <stdint.h> |
| #include <zephyr/llext/symbol.h> |
| #include <zephyr/kernel.h> |
| #include "threads_kernel_objects_ext.h" |
| |
| void test_thread(void *arg0, void *arg1, void *arg2) |
| { |
| printk("Take semaphore from test thread\n"); |
| k_sem_take(&my_sem, K_FOREVER); |
| } |
| |
| void test_entry(void) |
| { |
| printk("Give semaphore from main thread\n"); |
| k_sem_give(&my_sem); |
| |
| printk("Creating thread\n"); |
| k_tid_t tid = k_thread_create(&my_thread, (k_thread_stack_t *) &my_thread_stack, |
| MY_THREAD_STACK_SIZE, &test_thread, NULL, NULL, NULL, |
| MY_THREAD_PRIO, MY_THREAD_OPTIONS, K_FOREVER); |
| |
| printk("Starting thread\n"); |
| k_thread_start(tid); |
| |
| printk("Joining thread\n"); |
| k_thread_join(&my_thread, K_FOREVER); |
| printk("Test thread joined\n"); |
| } |
| LL_EXTENSION_SYMBOL(test_entry); |