refactor: change methods ENTER|EXIT critical The read and write of BaseType_t are atomic for a number of ports and therefore, do not require taskENTER_CRITICAL/taskEXIT_CRITICAL. This PR introduces portBASE_TYPE_ENTER_CRITICAL and portBASE_TYPE_EXIT_CRITICAL which default to taskENTER_CRITICAL and taskEXIT_CRITICAL. The APIs that read/write BaseType_t are updated to use these new macros. The next change would to be to define portBASE_TYPE_ENTER_CRITICAL and portBASE_TYPE_EXIT_CRITICAL to nothing for ports where BaseType_t read and write are atomic. Signed-off-by: guilherme giacomo simoes <trintaeoitogc@gmail.com> |
||
---|---|---|
.. | ||
CMakeLists.txt | ||
coverity_misra.config | ||
FreeRTOSConfig.h | ||
README.md |
MISRA Compliance for FreeRTOS-Kernel
FreeRTOS-Kernel is MISRA C:2012 compliant. This directory contains a project to run Synopsys Coverity for checking MISRA compliance.
Note
Coverity version 2023.6.1 incorrectly infers the type of
pdTRUE
andpdFALSE
as boolean because of their names, resulting in multiple false positive warnings about type mismatch. We replacepdTRUE
withpdPASS
andpdFALSE
withpdFAIL
to avoid these false positive warnings. This workaround will not be needed after Coverity fixes the issue of incorrectly inferring the type ofpdTRUE
andpdFALSE
as boolean.
Deviations from the MISRA C:2012 guidelines are documented in MISRA.md and coverity_misra.config files.
Getting Started
Prerequisites
Coverity can be run on any platform mentioned here. The following are the prerequisites to generate coverity report:
- CMake version > 3.13.0 (You can check whether you have this by typing
cmake --version
). - GCC compiler.
- See download and installation instructions here.
- Clone the repo using the following command:
git clone https://github.com/FreeRTOS/FreeRTOS-Kernel.git ./FreeRTOS-Kernel
Generating Report
Go to the root directory of the FreeRTOS-Kernel repo and run the following commands in a terminal:
- Update the compiler configuration in Coverity:
cov-configure --force --compiler cc --comptype gcc
- Create the build files using CMake in a
build
directory:
Singe core FreeRTOS:
cmake -B build -S examples/coverity
SMP FreeRTOS:
cmake -B build -S examples/coverity -DFREERTOS_SMP_EXAMPLE=1
- Build the (pseudo) application:
cd build/
cov-build --emit-complementary-info --dir cov-out make coverity
- Go to the Coverity output directory (
cov-out
) and begin Coverity static analysis:
cov-analyze --dir ./cov-out \
--coding-standard-config ../examples/coverity/coverity_misra.config \
--tu-pattern "file('[A-Za-z_]+\.c') && ( ! file('main.c') ) && ( ! file('port.c') )"
- Generate the HTML report:
cov-format-errors --dir ./cov-out --html-output html-output
HTML report should now be generated in a directory named html-output
.