FEO Module Safety Manual
|
status: draft
security: NO
safety: ASIL_B
|
||||
FEO Module Safety Manual#
Introduction/Scope#
This is a first partial draft version of the FEO (Fixed Order Execution Environment) module safety manual. For now it only contains Assumptions of Use related to the use of Rust libraries.
Assumed Platform Safety Requirements#
For FEO module the following safety related stakeholder requirements are assumed to define the top level functionality (purpose). I.e. from these all the feature and component requirements implemented are derived.
Assumptions of Use#
Assumptions on the Environment#
on_target_crates
|
status: invalid
security: YES
safety: ASIL_B
|
||||
Only the following crates of the FEO module shall be used to build code that runs on targets in release builds.
|
|||||
rust_core_lib
|
status: valid
security: YES
safety: ASIL_B
|
||||
The Rust core lib used to build FEO shall be qualified according to the same ASIL level as the FEO framework. |
|||||
rust_std_lib_modules
|
status: invalid
security: YES
safety: ASIL_B
|
||||
The following items from the Rust std library shall be safety qualified:
Note: The above list is not yet complete. It needs to be refined based on a final implementation. At the moment, it covers approximately 95% of std library usages. An accurate list could be determined by switching feo to #![no_std] and looking at the compilation errors, but it gets quickly out of date with a changing codebase. |
|||||
List of AoUs expected from the environment the platform / module runs on:
Title |
ID |
Status |
|---|---|---|
Application execution |
valid |
|
External Health Management |
valid |
|
OS safety functions |
valid |
|
Persistency Error handling |
valid |
|
POSIX Operating System |
valid |
|
Process Isolation |
valid |
|
Safe HW platform |
valid |
Assumptions on the User#
List of AoUs on the user of the platform features or the module of this safety manual:
Title |
ID |
Status |
|---|---|---|
aragen not safe |
valid |
|
Avoidance of Exceptions |
valid |
|
Avoidance of heap allocations after initialization |
valid |
|
Bazel tooling |
valid |
|
Bug fixing |
valid |
|
Bug interface |
valid |
|
C++ Library Preference |
valid |
|
Check for nullptr on Allocate() |
valid |
|
Checking for possible message overflow |
valid |
|
Config on a safe filesystem |
valid |
|
Correctly configured ASIL Level |
valid |
|
Correctly configured events/fields per service type |
valid |
|
Correctly configured maximum number of maximum elements per subscriber |
valid |
|
Correctly Configured Maximum Number of Subscribers |
valid |
|
Different user for ASIL and QM processes |
valid |
|
Error Reaction |
valid |
|
Event or Field reception via GenericProxy needs specific care |
valid |
|
Event Subscription active while holding SamplePtr |
valid |
|
FEO something |
invalid |
|
FEO something |
invalid |
|
Integration assistance |
valid |
|
Integration levels |
valid |
|
Integration manual |
valid |
|
Integrator safety anomaly reporting |
valid |
|
LoLa Memory only accessed through LoLa |
valid |
|
LoLa specific QNX Messaging End-Points only accessed through LoLa |
valid |
|
Minimal Process Privileges |
valid |
|
Monotonic Semi-Dynamic Memory Allocation |
valid |
|
No APIs from Implementation Namespace |
valid |
|
No Copy-Send() while holding AllocateePtr. |
valid |
|
No guarantee in availability of services |
valid |
|
No guarantee on execution time |
valid |
|
No guarantees for notifications |
valid |
|
No mixed ASIL |
valid |
|
No notification on termination of producer |
valid |
|
No Root Privileges |
valid |
|
No shared memory allocation in namespace lola |
valid |
|
No static context support |
valid |
|
Non-Terminating callbacks |
valid |
|
None reentrant methods per event instance |
valid |
|
on_target_crates |
invalid |
|
One producer only one AllocateePtr |
valid |
|
Only LoLa supported types |
valid |
|
OS Public API Use |
valid |
|
Program Flow Monitoring |
valid |
|
Quality of data is dependent on producer |
valid |
|
RST-0001 |
valid |
|
RST-0002 |
invalid |
|
rust_core_lib |
valid |
|
rust_std_lib_modules |
invalid |
|
Safe OS Function Use |
valid |
|
Safety anomaly reporting |
valid |
|
Safety AoU |
valid |
|
Safety functions |
valid |
|
Safety integration |
valid |
|
Safety matching |
valid |
|
Same compiler settings for provider and consumer side |
valid |
|
Skeleton alive while its AllocateePtr being used |
valid |
|
SW-platform integration bug reporting |
valid |
|
SW-platform test completion |
valid |
|
SW-platform testing |
valid |
|
unsupported data-types |
valid |
|
Usage of configuration "oversubscription" |
valid |
|
Valid callbacks while proxy alive |
valid |
|
Validity of pointer on LoLa pointer |
valid |