mirror of
https://github.com/zephyrproject-rtos/zephyr
synced 2025-08-26 11:35:50 +00:00
As both C and C++ standards require applications running under an OS to return 'int', adapt that for Zephyr to align with those standard. This also eliminates errors when building with clang when not using -ffreestanding, and reduces the need for compiler flags to silence warnings for both clang and gcc. Most of these changes were automated using coccinelle with the following script: @@ @@ - void + int main(...) { ... - return; + return 0; ... } Approximately 40 files had to be edited by hand as coccinelle was unable to fix them. Signed-off-by: Keith Packard <keithp@keithp.com> |
||
---|---|---|
.. | ||
src | ||
CMakeLists.txt | ||
prj.conf | ||
README.rst | ||
sample.yaml |
.. _userspace_protected_memory: Userspace Protected Memory ########################## Overview ******** This sample is an example of running multiple threads assigned unique memory domains with protected partitions. The application uses memory partitioning with a sample algorithm simulating an enigma-like machine, but the implementation of the machine has not been validated and should not be used for any actual security purposes. Requirements ************ The sample is dependent on the subsystem app_memory, and it will not run on boards that do not support the subsystem. The sample was tested on the following boards qemu_x86,frdm_k64, an 96b_carbon. Building and Running ******************** This example will only cover the qemu_x86 board, since the sample just prints text to a console. .. zephyr-app-commands:: :zephyr-app: samples/userspace/shared_mem :board: qemu_x86 :goals: build run :compact: After starting, the console will display multiple starting messages followed by two series of repeating messages. The repeating messages are the input and output of the enigma-like machine. The second message is the output of the first message, and the resulting output is the first message without spaces. The two messages are marked as 1 and 1' respectively. Exit QEMU by pressing :kbd:`CTRL+A` :kbd:`x`. Two definitions can be inserted to change the wheel settings and print the state information. To enable the definitions uncomment the last two lines in CMakeLists.txt. Functionality ************* The PT thread sends a message followed by the encrypted version of the message after sleeping. To send the message the PT thread checks a flag, and if it is clear, writes the message to a buffer shared with the encrypt thread. After writing the buffer, the flag is set. The encrypt thread copies the memory from the common buffer into the encrypted thread's private memory when the flag is set and then clears the flag. Once the encrypted thread receives the text string, it performs a simulation of the enigma machine to produce cypher text(CT). The CT is copied to a shared memory partition connecting to the third thread. The third thread prints the CT to the console with a banner denoting the content as CYPHER TEXT.