Component Requirements#

mw::log Backend Component Requirements
status: valid
security: YES
safety: ASIL_B
version: 1

mw::log#

Inactive LogStream Behavior
status: valid
security: NO
safety: QM

mw::log library shall not perform any useful activity if log level of LogStream object is insufficient for given context.

Avoid Signal Processing
status: valid
security: YES
safety: ASIL_B

mw::log shall not register any signal handler.

File Descriptor Flags
status: valid
security: YES
safety: ASIL_B

mw::log shall ensure that file descriptors it owns are not inherited by processes started by the application.

Note

This requirement can be satisfied in unit-test, by checking int flags = fcntl(fd, F_GETFD); assert((flags != -1) && (flags & FD_CLOEXEC)); for every file descriptor owned by the component.

DLT Verbose Mode
status: valid
security: NO
safety: QM
reqtype: Functional
version: 1

mw::log shall generate log messages in DLT verbose mode format, so that Datarouter can send them without additional reprocessing.

AUTOSAR Log and Trace Specification
status: valid
security: YES
safety: QM

mw::log shall implement “Specification of Log and Trace for Adaptive Platform”. Release of specification used shall be in agreement with the rest of Adaptive AUTOSAR stack.

Shared Memory File Permissions
status: valid
security: YES
safety: ASIL_B
reqtype: Functional
version: 1

mw::log shall ensure that the shared-memory files it creates are not writable by group and others.

Note

mw::log creates a shared memory file for each app.

Remote Backend#

Send Messages to Datarouter
status: valid
security: NO
safety: QM

mw::log shall hand over the log messages to the Datarouter process for forwarding when the remote backend is used. mw::log shall not transmit log messages to the network itself.

Remote Backend Activation
status: valid
security: NO
safety: QM
reqtype: Functional
version: 1

mw::log shall enable the file backend if and only if the log mode contains “kRemote”.

System Backend#

System logger backend shall forward the logs to the native system logger.

Forward to System Logger
status: valid
security: NO
safety: QM
reqtype: Functional
version: 2

mw::log shall forward the logs to the native system logger mechanism when the system logger backend is used.

Note

mw::log shall use slogger2 on QNX and syslog(3) on Linux.

System Backend Activation
status: valid
security: NO
safety: QM
reqtype: Functional
version: 1

mw::log shall enable the system logger backend if and only if the log mode contains “kSystem”.

File Backend#

File backend shall write the logs to the local file system.

Write to Local File
status: valid
security: NO
safety: QM
reqtype: Functional
version: 1

mw::log shall write the logs to a file on the local file system when the file backend is used.

File Backend Activation
status: valid
security: NO
safety: QM
reqtype: Functional
version: 1

mw::log shall enable the file backend if and only if the log mode contains “kFile”.

Non-Functional Requirements#

Heap Allocation Only During Initialization
status: valid
security: YES
safety: ASIL_B

mw::log shall allocate heap memory only during the initialization phase of the application lifecycle, and shall therefore satisfy any memory needs after that phase from pre-allocated, bounded memory resources.

Avoid Locks
status: valid
security: YES
safety: ASIL_B

mw::log shall be free of time-unbound locks and shall implement strategies to limit wait time. Time limit shall be defined based on requirements from functions on individual ECU. Mutual exclusion mechanisms shall include priority inversion protection.

Cross-Locking Prevention
status: valid
security: YES
safety: ASIL_B

Cross-application and cross-thread dependencies shall be avoided. A thread logging in a loop shall not block other thread’s execution.

Index and Size Checking
status: valid
security: YES
safety: ASIL_B

mw::log shall check indices in data structures and sizes of data accessed or copied for plausibility, to avoid high runtime utilization through long iterations or data corruption. If a check fails, mw::log shall discard the affected log message without performing the access.

Memory Bound Checking
status: valid
security: YES
safety: ASIL_B

mw::log shall check memory boundaries before writing to shared memory. If a check fails, mw::log shall discard the affected log message without performing the write.