AUTOSAR AP SWS ExecutionManagement
AUTOSAR AP SWS ExecutionManagement
AUTOSAR AP R23-11
Specification of Execution
Document Title Management
Document Owner AUTOSAR
Document Responsibility AUTOSAR
Document Identification No 721
4
• Clarified handling of unexpected
Process termination
• ara::exec::StateClient API
AUTOSAR updated (constructor token removed)
2021-11-25 R21-11 Release
Management • Invalid state transitions identified and
handling defined
• ara::exec::DeterministicClient
API and behaviour clarified
• Further refinement of State
Management API and semantics
• EM-PHM interaction
• Further refinement of State
Management API and semantics
4
• Deterministic Execution
AUTOSAR • Resource Limitation
2018-03-29 18-03 Release
Management • State Management
Disclaimer
This work (specification and/or software implementation) and the material contained in
it, as released by AUTOSAR, is for the purpose of information only. AUTOSAR and the
companies that have contributed to it shall not be liable for any use of the work.
The material contained in this work is protected by copyright and other types of intel-
lectual property rights. The commercial exploitation of the material contained in this
work requires a license to such intellectual property rights.
This work may be utilized or reproduced without any modification, in any form or by
any means, for informational purposes only. For any other purpose, no part of the work
may be utilized or reproduced, in any form or by any means, without permission in
writing from the publisher.
The work has been developed for automotive applications only. It has neither been
developed, nor tested for non-automotive applications.
The word AUTOSAR and the AUTOSAR logo are registered trademarks.
Requirement Levels
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
document are to be interpreted as follows.
Note that the requirement level of the document in which they are used modifies the
force of these words.
• MUST: This word, or the adjective "LEGALLY REQUIRED", means that the defi-
nition is an absolute requirement of the specification due to legal issues.
• MUST NOT: This phrase, or the phrase "MUST NOT", means that the definition
is an absolute prohibition of the specification due to legal issues.
• SHALL: This phrase, or the adjective "REQUIRED", means that the definition is
an absolute requirement of the specification.
• SHALL NOT: This phrase means that the definition is an absolute prohibition of
the specification.
• SHOULD: This word, or the adjective "RECOMMENDED", means that there may
exist valid reasons in particular circumstances to ignore a particular item, but the
full implications must be understood and carefully weighed before choosing a
different course.
• SHOULD NOT: This phrase, or the phrase "NOT RECOMMENDED", means that
there may exist valid reasons in particular circumstances when the particular be-
havior is acceptable or even useful, but the full implications should be understood
and the case carefully weighed before implementing any behavior described with
this label.
• MAY: This word, or the adjective "OPTIONAL", means that an item is truly op-
tional. One vendor may choose to include the item because a particular market-
place requires it or because the vendor feels that it enhances the product while
another vendor may omit the same item.
An implementation, which does not include a particular option, SHALL be prepared
to interoperate with another implementation, which does include the option, though
perhaps with reduced functionality. In the same vein an implementation, which does
include a particular option, SHALL be prepared to interoperate with another implemen-
tation, which does not include the option (except, of course, for the feature the option
provides.)
Contents
1 Introduction and functional overview 12
1.1 What is Execution Management? . . . . . . . . . . . . . . . . . . . . . 12
1.2 Interaction with AUTOSAR Runtime for Adaptive . . . . . . . . . . . . 12
2 Acronyms and abbreviations 14
3 Related documentation 18
3.1 Input documents & related standards and norms . . . . . . . . . . . . 18
3.2 Further applicable specification . . . . . . . . . . . . . . . . . . . . . . 19
4 Constraints and assumptions 20
4.1 Known Limitations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
5 Dependencies to other Functional Clusters 21
5.1 Provided Interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
5.2 Required Interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
6 Requirements Tracing 24
6.1 Not applicable requirements . . . . . . . . . . . . . . . . . . . . . . . . 28
7 Functional specification 29
7.1 Functional Cluster Lifecyle . . . . . . . . . . . . . . . . . . . . . . . . . 30
7.1.1 Startup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
7.1.2 Shutdown . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
7.1.3 Restart . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
7.2 Technical Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
7.2.1 Application . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
7.2.2 Adaptive Application . . . . . . . . . . . . . . . . . . . . . . . 30
7.2.3 Executable . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
7.2.4 Modelled Process . . . . . . . . . . . . . . . . . . . . . . . . 32
7.2.5 Execution Manifest . . . . . . . . . . . . . . . . . . . . . . . 33
7.2.6 Machine Manifest . . . . . . . . . . . . . . . . . . . . . . . . 33
7.2.7 Manifest Format . . . . . . . . . . . . . . . . . . . . . . . . . 34
7.3 Execution Management Responsibilities . . . . . . . . . . . . . . . . . 35
7.3.1 Error handling . . . . . . . . . . . . . . . . . . . . . . . . . . 36
7.4 Process Lifecycle Management . . . . . . . . . . . . . . . . . . . . . . 38
7.4.1 Execution State . . . . . . . . . . . . . . . . . . . . . . . . . 38
7.4.1.1 Initialization . . . . . . . . . . . . . . . . . . . . . . . 38
7.4.1.2 Termination . . . . . . . . . . . . . . . . . . . . . . . 39
7.4.1.3 Unexpected Termination . . . . . . . . . . . . . . . . 40
7.4.1.4 Application Reporting . . . . . . . . . . . . . . . . . 40
7.4.2 Process States . . . . . . . . . . . . . . . . . . . . . . . . . . 41
7.4.2.1 Synchronization with Platform Health Management . 42
7.4.3 Trace Process State Transitions . . . . . . . . . . . . . . . . 43
7.4.4 Startup and Termination . . . . . . . . . . . . . . . . . . . . . 44
The Adaptive AUTOSAR Services are provided via mechanisms provided by the
Communication Management functional cluster [1] of the Adaptive Platform
Foundation. In order to use the Adaptive AUTOSAR Services, the functional clusters
in the Adaptive Platform Foundation must be properly initialized beforehand.
Please refer to the respective specifications regarding more information on Communi-
cation Management.
The following technical terms used throughout this document are defined in the official
[2] AUTOSAR Glossary or [3] TPS Manifest Specification – they are repeated here for
tracing purposes.
Description
Term
Adaptive Application see [2] AUTOSAR Glossary
Application see [2] AUTOSAR Glossary
AUTOSAR Adaptive Platform see [2] AUTOSAR Glossary
Adaptive Platform Foundation see [2] AUTOSAR Glossary
Adaptive Platform Services see [2] AUTOSAR Glossary
Manifest see [2] AUTOSAR Glossary
Executable see [2] AUTOSAR Glossary
Functional Cluster see [2] AUTOSAR Glossary
Machine see [2] AUTOSAR Glossary
Processed Manifest see [2] AUTOSAR Glossary
Service see [2] AUTOSAR Glossary
Service Interface see [2] AUTOSAR Glossary
Service Discovery see [2] AUTOSAR Glossary
PLATFORM_CORE see [3] TPS Manifest Specification
3 Related documentation
AUTOSAR_AP_EXP_PlatformDesign
[15] Explanation of Identity and Access Management
AUTOSAR_AP_EXP_IdentityAndAccessManagement
«aapAPI,aapNativeInterface»
ExecutionClient
+ Create()
+ ReportExecutionState(ExecutionState): Result
«aapFunctionalCluster»
Execution Management
daemon-based
Figure 5.1 shows the interfaces provided by Execution Management to other Func-
tional Clusters within the AUTOSAR Adaptive Platform.
«aapFunctionalCluster»
State Management
daemon-based
«use» «use»
«aapRequiredPort»
«aapAPI,aapNativeInterface» «aapAPI,aapPortInterface»
StateClient FunctionGroupState
+ Create(function)
+ GetExecutionError()
+ GetInitialMachineStateTransitionResult()
+ SetState(FunctionGroupState): Future
«aapFunctionalCluster»
Execution Management
daemon-based
ExecutionClient Diagnostic Management This interface is used to report the status of the
Diagnostic Management daemon process(es).
Platform Health Management Platform Health Management uses this interface to
report the state of its daemon process to Execution
Management.
State Management This interface shall be used to report the state of the
State Management process(es).
Time Synchronization Time Synchronization shall use this interface to
report the state of its daemon process.
Update and Configuration This interface shall be used by the daemon process(es)
Management inside Update and Configuration Management to
report their execution state to Execution Management.
Vehicle Update and Configuration This interface shall be used by the daemon process(es)
Management inside Vehicle Update and Configuration
Management to report their execution state to Execution
Management.
FunctionGroup State Management This interface shall be used to request
State FunctionGroupState transitions and to check their status.
StateClient State Management This interface shall be used to request
FunctionGroupState transitions.
«aapFunctionalCluster»
Execution Management
daemon-based
«use»
«use» «use»
«aapRequiredPort»
Figure 5.3: Interfaces required by Execution Management from other Functional Clusters
Figure 5.3 shows the interfaces required by Execution Management from other
Functional Clusters within the AUTOSAR Adaptive Platform. Table 5.2 provides a com-
plete list of required interfaces from other Functional Clusters within the AUTOSAR
Adaptive Platform.
6 Requirements Tracing
The following tables reference the requirements specified in [5] and links to the fulfill-
ment of these. Please note that if column “Satisfied by” is empty for a specific require-
ment this means that this requirement is not fulfilled by this document.
Requirement Description Satisfied by
[RS_AP_00114] C++ interface shall be compatible [SWS_EM_02560] [SWS_EM_02561]
with C++14.
[RS_AP_00116] Header file name. [SWS_EM_02210] [SWS_EM_02510]
[SWS_EM_02530] [SWS_EM_02544]
[RS_AP_00119] Return values / application errors. [SWS_EM_02003] [SWS_EM_02276]
[SWS_EM_02278] [SWS_EM_02279]
[SWS_EM_02560] [SWS_EM_02561]
[SWS_EM_02562]
[RS_AP_00120] Method and Function names. [SWS_EM_02003] [SWS_EM_02217]
[SWS_EM_02221] [SWS_EM_02225]
[SWS_EM_02226] [SWS_EM_02231]
[SWS_EM_02236] [SWS_EM_02276]
[SWS_EM_02278] [SWS_EM_02279]
[SWS_EM_02283] [SWS_EM_02286]
[SWS_EM_02287] [SWS_EM_02288]
[SWS_EM_02289] [SWS_EM_02290]
[SWS_EM_02291] [SWS_EM_02520]
[SWS_EM_02540] [SWS_EM_02542]
[SWS_EM_02560] [SWS_EM_02561]
[SWS_EM_02562]
[RS_AP_00121] Parameter names. [SWS_EM_02003] [SWS_EM_02221]
[SWS_EM_02226] [SWS_EM_02276]
[SWS_EM_02278] [SWS_EM_02283]
[SWS_EM_02288] [SWS_EM_02289]
[SWS_EM_02291] [SWS_EM_02520]
[SWS_EM_02542] [SWS_EM_02560]
[SWS_EM_02561]
[RS_AP_00122] Type names. [SWS_EM_02201] [SWS_EM_02203]
[SWS_EM_02210] [SWS_EM_02281]
[SWS_EM_02282] [SWS_EM_02284]
[SWS_EM_02510] [SWS_EM_02530]
[SWS_EM_02531] [SWS_EM_02532]
[SWS_EM_02541] [SWS_EM_02544]
[RS_AP_00124] Variable names. [SWS_EM_02544] [SWS_EM_02545]
[SWS_EM_02546]
[RS_AP_00127] Usage of ara::core types. [SWS_EM_02203] [SWS_EM_02217]
[SWS_EM_02221] [SWS_EM_02231]
[SWS_EM_02236] [SWS_EM_02281]
[SWS_EM_02282] [SWS_EM_02284]
[RS_AP_00128] Error reporting. [SWS_EM_02003] [SWS_EM_02292]
[SWS_EM_02542] [SWS_EM_02562]
[RS_AP_00129] Public types defined by functional [SWS_EM_02201]
clusters shall be designed to allow
implementation without dynamic
memory allocation.
5
4
Requirement Description Satisfied by
[RS_AP_00130] AUTOSAR Adaptive Platform shall [SWS_EM_02246] [SWS_EM_02247]
represent a rich and modern [SWS_EM_02248] [SWS_EM_02249]
programming environment. [SWS_EM_02281] [SWS_EM_02282]
[SWS_EM_02283] [SWS_EM_02284]
[SWS_EM_02286] [SWS_EM_02287]
[SWS_EM_02288] [SWS_EM_02289]
[SWS_EM_02290] [SWS_EM_02291]
[RS_AP_00132] noexcept behavior of API functions [SWS_EM_02003] [SWS_EM_02211]
[SWS_EM_02217] [SWS_EM_02221]
[SWS_EM_02225] [SWS_EM_02226]
[SWS_EM_02231] [SWS_EM_02236]
[SWS_EM_02276] [SWS_EM_02278]
[SWS_EM_02279] [SWS_EM_02283]
[SWS_EM_02286] [SWS_EM_02287]
[SWS_EM_02288] [SWS_EM_02290]
[SWS_EM_02291] [SWS_EM_02540]
[SWS_EM_02542] [SWS_EM_02562]
[RS_AP_00134] noexcept behavior of class [SWS_EM_02000] [SWS_EM_02002]
destructors [SWS_EM_02215] [SWS_EM_02272]
[SWS_EM_02277] [SWS_EM_02532]
[RS_AP_00138] Return type of asynchronous function [SWS_EM_02278] [SWS_EM_02279]
calls.
[RS_AP_00139] Return type of synchronous function [SWS_EM_02003] [SWS_EM_02217]
calls. [SWS_EM_02221] [SWS_EM_02231]
[SWS_EM_02236] [SWS_EM_02276]
[SWS_EM_02542] [SWS_EM_02562]
[RS_AP_00140] Usage of "final specifier" in ara types. [SWS_EM_02210] [SWS_EM_02544]
[RS_AP_00143] Use 32-bit integral types by default. [SWS_EM_02201]
[RS_AP_00144] Availability of a named constructor. [SWS_EM_02276] [SWS_EM_02562]
[RS_AP_00145] Availability of special member [SWS_EM_02002] [SWS_EM_02272]
functions. [SWS_EM_02277] [SWS_EM_02325]
[SWS_EM_02330] [SWS_EM_02331]
[SWS_EM_02332] [SWS_EM_02563]
[SWS_EM_02564] [SWS_EM_02565]
[SWS_EM_02566] [SWS_EM_02567]
[SWS_EM_02568] [SWS_EM_02580]
[SWS_EM_02581]
[RS_AP_00148] Default arguments are not allowed in [SWS_EM_02520] [SWS_EM_02532]
virtual functions.
[RS_AP_00149] Guidance on error handling. [SWS_EM_02557]
[RS_AP_00150] Provide only interfaces that are [SWS_EM_02001] [SWS_EM_02210]
intended to be used by AUTOSAR [SWS_EM_02263] [SWS_EM_02269]
applications and other Functional [SWS_EM_02275] [SWS_EM_02282]
Clusters. [SWS_EM_02284] [SWS_EM_02510]
[SWS_EM_02530]
[RS_AP_00151] C++ Core Guidelines. [SWS_EM_02331] [SWS_EM_02332]
[SWS_EM_02560] [SWS_EM_02561]
[SWS_EM_02566] [SWS_EM_02567]
[SWS_EM_02580] [SWS_EM_02581]
[RS_AP_00153] Assignment operators should restrict [SWS_EM_02330] [SWS_EM_02332]
"this" to lvalues
5
4
Requirement Description Satisfied by
[RS_AP_00154] Internal namespaces. [SWS_EM_02001] [SWS_EM_02201]
[SWS_EM_02210] [SWS_EM_02263]
[SWS_EM_02269] [SWS_EM_02275]
[SWS_EM_02281] [SWS_EM_02282]
[SWS_EM_02284] [SWS_EM_02290]
[SWS_EM_02291] [SWS_EM_02510]
[SWS_EM_02530] [SWS_EM_02541]
[SWS_EM_02544]
[RS_AP_00155] Avoidance of cluster-specific [SWS_EM_02557]
initialization functions.
[RS_EM_00002] Execution Management shall [SWS_EM_01014] [SWS_EM_01015]
set-up one process for the execution [SWS_EM_01041] [SWS_EM_01042]
of each Modelled Process. [SWS_EM_01043]
[RS_EM_00005] Execution Management shall [SWS_EM_02102] [SWS_EM_02103]
support the configuration of OS [SWS_EM_02106] [SWS_EM_02108]
resource budgets for process and [SWS_EM_02109]
groups of processes.
[RS_EM_00008] Execution Management shall [SWS_EM_02104]
support the binding of all threads of a
given process to a specified set of
processor cores.
[RS_EM_00009] Execution Management shall [SWS_EM_01030] [SWS_EM_01033]
control the right to create child [SWS_EM_02559]
processes for each process it
starts.
[RS_EM_00010] Execution Management shall [SWS_EM_01012] [SWS_EM_01072]
support multiple instances of [SWS_EM_01078] [SWS_EM_02246]
Executables. [SWS_EM_02247] [SWS_EM_02248]
[SWS_EM_02249]
[RS_EM_00011] Execution Management shall [SWS_EM_01006] [SWS_EM_01404]
support self-initiated graceful
shutdown of processes.
[RS_EM_00014] Execution Management shall [SWS_EM_02299] [SWS_EM_02300]
support a Trusted Platform. [SWS_EM_02301] [SWS_EM_02302]
[SWS_EM_02303] [SWS_EM_02305]
[SWS_EM_02306] [SWS_EM_02307]
[SWS_EM_02308] [SWS_EM_02309]
[SWS_EM_02556]
[RS_EM_00015] Execution Management shall [SWS_EM_02300] [SWS_EM_02301]
support integrity and authenticity [SWS_EM_02302] [SWS_EM_02303]
monitoring. [SWS_EM_02305] [SWS_EM_02306]
[SWS_EM_02400] [SWS_EM_02556]
[RS_EM_00050] Execution Management shall [SWS_EM_01320] [SWS_EM_01321]
perform Machine-wide coordination [SWS_EM_01322] [SWS_EM_01325]
of processes. [SWS_EM_01326] [SWS_EM_01327]
[SWS_EM_01328]
[RS_EM_00051] Execution Management shall [SWS_EM_01304] [SWS_EM_01313]
provide APIs to the process for [SWS_EM_01320] [SWS_EM_01325]
configuring external trigger conditions [SWS_EM_01326]
for its activities.
5
4
Requirement Description Satisfied by
[RS_EM_00052] Execution Management shall [SWS_EM_01301] [SWS_EM_01302]
provide APIs to the process for [SWS_EM_01303] [SWS_EM_01304]
configuring cyclic triggering of its [SWS_EM_01351] [SWS_EM_01352]
activities. [SWS_EM_01353] [SWS_EM_02201]
[SWS_EM_02203] [SWS_EM_02210]
[SWS_EM_02211] [SWS_EM_02215]
[SWS_EM_02217] [SWS_EM_02510]
[SWS_EM_02511] [SWS_EM_02512]
[SWS_EM_02513] [SWS_EM_02514]
[SWS_EM_02515] [SWS_EM_02520]
[SWS_EM_02530] [SWS_EM_02531]
[SWS_EM_02532] [SWS_EM_02533]
[SWS_EM_02534] [SWS_EM_02535]
[SWS_EM_02540] [SWS_EM_02550]
[RS_EM_00053] Execution Management shall [SWS_EM_01305] [SWS_EM_01306]
provide APIs to the process to [SWS_EM_01310] [SWS_EM_01311]
support deterministic redundant [SWS_EM_01312] [SWS_EM_01313]
execution of processes. [SWS_EM_01320] [SWS_EM_01321]
[SWS_EM_01322] [SWS_EM_01323]
[SWS_EM_01324] [SWS_EM_01325]
[SWS_EM_01326] [SWS_EM_01327]
[SWS_EM_01328] [SWS_EM_02203]
[SWS_EM_02211] [SWS_EM_02215]
[SWS_EM_02221] [SWS_EM_02225]
[SWS_EM_02226] [SWS_EM_02231]
[SWS_EM_02236] [SWS_EM_02551]
[RS_EM_00100] Execution Management shall [SWS_EM_01000] [SWS_EM_01001]
support the ordered startup and [SWS_EM_01050] [SWS_EM_01051]
shutdown of processes. [SWS_EM_CONSTR_00001]
[SWS_EM_CONSTR_01744]
[RS_EM_00101] Execution Management shall [SWS_EM_01013] [SWS_EM_01023]
support State Management [SWS_EM_01032] [SWS_EM_01033]
functionality. [SWS_EM_01060] [SWS_EM_01065]
[SWS_EM_01066] [SWS_EM_01067]
[SWS_EM_01107] [SWS_EM_01110]
[SWS_EM_02241] [SWS_EM_02245]
[SWS_EM_02250] [SWS_EM_02251]
[SWS_EM_02253] [SWS_EM_02254]
[SWS_EM_02255] [SWS_EM_02258]
[SWS_EM_02259] [SWS_EM_02260]
[SWS_EM_02263] [SWS_EM_02266]
[SWS_EM_02267] [SWS_EM_02268]
[SWS_EM_02269] [SWS_EM_02272]
[SWS_EM_02273] [SWS_EM_02274]
[SWS_EM_02275] [SWS_EM_02276]
[SWS_EM_02277] [SWS_EM_02278]
[SWS_EM_02279] [SWS_EM_02280]
[SWS_EM_02295] [SWS_EM_02296]
[SWS_EM_02297] [SWS_EM_02298]
[SWS_EM_02310] [SWS_EM_02312]
[SWS_EM_02313] [SWS_EM_02314]
[SWS_EM_02315] [SWS_EM_02316]
[SWS_EM_02321] [SWS_EM_02322]
[SWS_EM_02323] [SWS_EM_02324]
[SWS_EM_02325] [SWS_EM_02326]
[SWS_EM_02327] [SWS_EM_02328]
[SWS_EM_02329] [SWS_EM_02330]
[SWS_EM_02331] [SWS_EM_02332]
[SWS_EM_02541] [SWS_EM_02542]
[SWS_EM_02543] [SWS_EM_02544]
[SWS_EM_02545] [SWS_EM_02546]
5
4
Requirement Description Satisfied by
4
[SWS_EM_02549] [SWS_EM_02552]
[SWS_EM_02555] [SWS_EM_02561]
[SWS_EM_CONSTR_02556]
[SWS_EM_CONSTR_02557]
[SWS_EM_CONSTR_02558]
[SWS_EM_CONSTR_02559]
[RS_EM_00103] Execution Management shall [SWS_EM_01002] [SWS_EM_01003]
support process lifecycle [SWS_EM_01004] [SWS_EM_01006]
management. [SWS_EM_01055] [SWS_EM_01210]
[SWS_EM_01211] [SWS_EM_01212]
[SWS_EM_01309] [SWS_EM_01314]
[SWS_EM_01401] [SWS_EM_01402]
[SWS_EM_01403] [SWS_EM_01404]
[SWS_EM_02000] [SWS_EM_02001]
[SWS_EM_02002] [SWS_EM_02003]
[SWS_EM_02243] [SWS_EM_02558]
[SWS_EM_02560] [SWS_EM_02562]
[SWS_EM_02563] [SWS_EM_02564]
[SWS_EM_02565] [SWS_EM_02566]
[SWS_EM_02567] [SWS_EM_02568]
[SWS_EM_02577] [SWS_EM_02578]
[SWS_EM_02579] [SWS_EM_02580]
[SWS_EM_02581]
[RS_EM_00111] Execution Management shall [SWS_EM_02400]
assist identification of processes
during Machine runtime.
[RS_EM_00113] Execution Management shall [SWS_EM_01301] [SWS_EM_01310]
support time-triggered execution. [SWS_EM_01312] [SWS_EM_01313]
[RS_EM_00150] Error Handling. [SWS_EM_02032] [SWS_EM_02033]
[SWS_EM_02034] [SWS_EM_02547]
[SWS_EM_02548]
[RS_EM_00152] Execution Management shall [SWS_EM_02569] [SWS_EM_02570]
support standardized trace points [SWS_EM_02571] [SWS_EM_02572]
throughout the state transitions. [SWS_EM_02573] [SWS_EM_02574]
[SWS_EM_02575] [SWS_EM_02576]
7 Functional specification
Execution Management is a functional cluster contained in the Adaptive Plat-
form Foundation. Execution Management is responsible for all aspects of sys-
tem execution management including platform initialization and startup / shutdown of
Applications.
Execution Management works in conjunction with the Operating System. In partic-
ular, Execution Management is responsible for configuring the Operating System to
perform run-time scheduling and resource monitoring of Applications.
This chapter describes the functional behavior of Execution Management.
• Section 7.2 presents an introduction to key terms within Execution Manage-
ment focusing on the relationship between Application, Executable, and
Modelled Process. With the latter, we refer to an instance of the meta-model
describing a process, it will eventually be realized by an operating system pro-
cess.
• Section 7.3 covers the core Execution Management run-time responsibilities
including the start of Applications.
• Section 7.4 describes the lifecycle of Applications including Modelled Pro-
cess state transitions and startup / shutdown sequences.
• Section 7.5 covers several topics related to State Management within Execu-
tion Management including Function Group state management and state
transition behavior.
• Section 7.6 documents support provided by Execution Management Deter-
ministic execution such that given the same input and internal state, a calculation
will always produce the same output.
• Section 7.7 describes how Execution Management supports resource man-
agement including the limitation of usage of CPU and memory by an Applica-
tion.
• Section 7.8 provides an introduction to Fault Tolerance strategies in general. This
section will be expanded in a future release to describe how such strategies are
realized within Execution Management.
• Section 7.9 covers the topic of Trusted Platform, i.e. ensuring the integrity
and authenticity of Applications.
7.1.1 Startup
7.1.2 Shutdown
7.1.3 Restart
7.2.1 Application
i.e. it is restricted to the use of APIs standardized by AUTOSAR and needs to follow
specific coding guidelines to allow reallocation between different implementations of
the AUTOSAR Adaptive Platform.
Adaptive Applications are always located above the middleware. To allow porta-
bility and reuse, user-level Applications should be Adaptive Applications
whenever technically possible.
Figure 7.1 shows the different types of Applications.
Information Classification: Internal
platform/
machine
reusable
typical platform
functional cluster OS/hardware
fully AUTOSAR Application
Application specific
compliant
implementation
7.2.3 Executable
Service
executable Execution
Machine Instance
(binary) Manifest
Manifest Manifest
Software Package
offboard
machine
process
application process installed
(loaded executable instance) executable Update and
Configuration
Management
API
API API API
API deployment,
Execution processed
application authentication,
other
Management manifests
manifest installation
functional
function
functional OS
clusters
cluster startup, configure OS, data base
cluster
shutdown, …
Remark: In this release of this document it is mostly assumed that processes are
self-contained, i.e. that they take care of controlling thread creation and scheduling
by calling APIs of the Operating System Interface from within the code. Execution
Management only starts and terminates the processes and while the processes
are running, Execution Management only interacts with the processes by pro-
viding State Management mechanisms (see 7.5) or APIs to support Deterministic
Execution (see 7.6.3).
The Machine Manifest is also created at integration time for a specific Machine
and is deployed like Execution Manifests whenever its contents change. The
Machine Manifest holds all configuration information which cannot be assigned to
a specific Executable or its instances (the Modelled Processes), i.e. which is
not already covered by an Execution Manifest or a Service Instance Mani-
fest.
The contents of a Machine Manifest includes the configuration of Machine prop-
erties and features (resources, safety, security, etc.). For details see [3].
The Execution Manifests and the Machine Manifest can be transformed from
the original standardized ARXML into a platform-specific format (called Processed
Manifest), which is efficiently readable at Machine startup. The format transforma-
tion can be done either off board at integration time or at deployment time, or on the
Machine (by Update and Configuration Management) at installation time.
Depending on the Machine State or on any other Function Group State, de-
ployed Executables are started during AUTOSAR Adaptive Platform startup or
later, however it is not expected that all will begin active work immediately since many
processes will provide services to other processes and therefore wait and “listen”
for incoming service requests.
Execution Management derives an ordering for startup/shutdown of deployed Exe-
cutables within the context of Machine and/or Function Group State changes based
on declared Execution Dependencies [SWS_EM_01050]. The dependencies are
described in the Execution Manifests, see [TPS_MANI_01041].
Execution Management is not responsible for run-time scheduling of processes
since this is the responsibility of the Operating System [SWS_OSI_01003]. How-
ever, Execution Management is responsible for initialization / configuration of the
OS to enable it to perform the necessary run-time scheduling and resource manage-
ment based on information extracted by Execution Management from the Machine
Manifest and Execution Manifests.
Execution Management does not perform standardized termination handling - the
response to receipt of a signal, e.g. SIGTERM, by Execution Management is there-
fore implementation defined.
Execution States characterizes the internal lifecycle of a process. In other words, they
describe it from the point of view of a process that is executed. The states visible to
the process are defined by the ara::exec::ExecutionState enumeration, see
[SWS_EM_02000].
Initializing Terminating
create process Running
application store data,
allocate perform main Terminate
data free resources,
resources functionality
initialization exit
7.4.1.1 Initialization
7.4.1.2 Termination
Process States characterize the lifecycle of a process from the point of view of
Execution Management. In other words, Process States represent the Exe-
cution Management internal tracking of the Execution States (see Section 7.4.1)
and hence there is no need for a standardized type. Note that each process is in-
dependent and therefore has its own Process State. Process State is used by
Execution Management to resolve Execution Dependencies, manage timeouts, etc.
Additionally to the existing values for the Process State (Idle, Starting, Run-
ning, Terminating, Terminated), the implementation may define its own Process
States, which are not in conflict/not replacing the existing ones.
Starting
Terminated
process
Idle Execute Schedule Running Terminate Terminating process
created,
resources
resources
freed
allocated
[SWS_EM_01002] Idle Process State dThe Idle Process State shall be the
Process State prior to creation of the process and to resource allocation.c(RS_-
EM_00103)
[SWS_EM_01003] Starting Process State dThe Starting Process State shall
apply when the process has been created and resources have been allocated.c(RS_-
EM_00103)
[SWS_EM_01004] Running Process State of Reporting Processes dThe Running
Process State shall apply to a Reporting Process after it has reported kRun-
ning Execution State to Execution Management.c(RS_EM_00103)
Execution Management can derive an ordering for the startup and termination of
processes within State Management framework based on the declared Execu-
tion Dependencies. This ensures that Applications are started before depen-
dent Applications use the services that they provide and, likewise, that Applica-
tions are shutdown only when their provided services are no longer required.
The Execution Dependencies, see [TPS_MANI_01041] and [constr_1606], are
configured in the Execution Manifests, which is created at integration time based
on information provided by the Application developer. An Execution Depen-
dency defines the provider of functionality required by a process necessary for that
process to provide its own functionality. Execution Management ensures the de-
pendent processes are in the state defined by the Execution Dependency before
the process defining the dependency is started.
User-level Applications are expected to use the service discovery mechanisms of
Communication Management as the primary mechanism for execution sequencing
as this is supported both within a Machine and across Machine boundaries. Thus
user-level applications should not rely on Execution Dependencies unless strictly
necessary. Which processes are running depends on the current Function Group
States, including the Machine State, see Section 7.5. The integrator should en-
sure that all service dependencies are mapped to the State Management configuration,
i.e. that all dependent processes are running when needed.
In real life, specifying a simple dependency to a process might not be sufficient to
ensure that the depending service is actually provided. Since some processes shall
reach a certain Execution State (see Section 7.4.1) to be able to offer their services to
other processes, the dependency information shall also refer to Process State of
the process specified as dependency. With that in mind, the dependency information
may be represented as a pair like: <process>.<processState>. For more details
regarding the Process States refer to Section 7.4.2.
The following dependency use-cases have been identified:
Dependency on Running Process State In case process B has a simple depen-
dency on process A, the Running Process State of process A is specified
in the dependency section of process B’s Execution Manifest.
When process B has a Running Execution Dependency to process A,
then process B will only be started once the process A achieves Running
Process State.
Dependency on Terminated Process State In case process D depends on
Self-terminating Process C, the Terminated Process State of pro-
cess C is specified in the dependency section of process D’s Execution
Manifest.
Example 7.1
Example 7.2
Consider the same process, DataLogger, as above which has an Execution De-
pendency on another process, Storage. For termination the Execution Depen-
dency indicates Execution Management is required to only terminate Storage after
DataLogger so the latter can flush its data during termination.
Example 7.3
Storage, then this can be achieved by adding a direct Execution Dependency be-
tween Conf igReader and Storage.
Example 7.4
Let assume that process “A” depends on the Running Process State of a pro-
cess “B”. At a Machine State transition, process “A” shall be started, because it
references the new Machine State. However, process “B” does not reference that
Machine State, so it is not started. Due to the Execution Dependency between
the two processes, process “A” would never start running in the new Machine
State because it waits forever for process “B”. This is considered to be a configura-
tion error and shall also cause run time error.
the Companion Process. Please note that the Terminated Execution Depen-
dency is not affected as Execution Management is informed by the Operating
System when Non-reporting Processes are Terminated. Please see Figure
7.5 for more details.
Process reference
state transition A B
Function Group 1
FG1:Off FG1:Running
State
C D
Terminated
A Running
Idle
Terminated
B Running
Idle
Terminated
C Running
Idle
dependency
Terminated
D Running
Idle
Process State
• process C is started when (and only when) process B enters Running Pro-
cess State (i.e. reports kRunning). Please note this Execution Depen-
dency will work independently from reporting / non-reporting configuration of
process C.
• process D has Terminated Execution Dependency configured on Self-
-terminating Process (and Non-reporting Process) A. As mentioned
earlier this works out of the box (no special action needed here).
7.4.4.3 Arguments
specific environment variables are configured in the Machine Manifest. During run-
time environment variables are accessible via POSIX getenv() command.
[SWS_EM_02246] process specific Environment Variables dExecution Manage-
ment shall prepare environment variables based on the configuration from Process.
stateDependentStartupConfig.startupConfig.environmentVariable and
pass them during a process start.c(RS_EM_00010, RS_AP_00130)
[SWS_EM_02247] Machine specific Environment Variables dExecution Man-
agement shall prepare environment variables based on the configuration from Ma-
chine.environmentVariable and pass them during a process start.c(RS_EM_-
00010, RS_AP_00130)
Please note that AUTOSAR meta model (see [3]) uses TagWithOptionalValue for
environment variables definition ([TPS_MANI_01208] and [TPS_MANI_01209]). As
explained there, the value (TagWithOptionalValue.value) can be omitted as a
way of specifying environment variable with empty value.
[SWS_EM_02249] Missing value from Environment Variable definition dWhenever
Execution Management finds environment variable definition, that has TagWith-
OptionalValue.value missing, it should use empty string as a value for this envi-
ronment variable.c(RS_EM_00010, RS_AP_00130)
[SWS_EM_02248] Environment Variables precedence dWhenever the same envi-
ronment variable is configured within both the Execution Manifest and the Ma-
chine Manifest then Execution Management shall use the environment variable
value from the Execution Manifest.c(RS_EM_00010, RS_AP_00130)
All of these processes might be started and managed outside of the context of the
AUTOSAR Adaptive Platform.
Please note that an Application consists of one or more Executables. There-
fore to launch an Application, Execution Management starts processes as
instances of each Executable.
[SWS_EM_01000] Startup order dThe startup order of the platform-level processes
shall be determined by Execution Management based on Machine Manifest
and Execution Manifest information.c(RS_EM_00100)
Please see Section 7.2.5.
Figure 7.6 shows the overall startup sequence.
State Change
7.5.1 Overview
Additional Machine States can be defined on a machine specific basis and are
therefore not standardized.
The Execution Manifest defines the relation between processes and Function
Group States. Therefore it is possible to determine the set of executed processes for
each Function Group State. A Function Group State is modeled by means
of ModeDeclaration, see [TPS_MANI_03145] and [TPS_MANI_03194].
In the API, a Function Group is represented by the class ara::exec::Func-
tionGroup, see [SWS_EM_02263] and a Function Group State by the class
ara::exec::FunctionGroupState, see [SWS_EM_02269]. Class ara::exec::
StateClient performs state management during the lifetime of a Machine, see
[SWS_EM_02275].
Machine States (as well as other Function Group States) are requested by
State Management. The set of active states is significantly influenced by vehicle-
wide events and modes. For details on state change management see Section 7.5.5.
[SWS_EM_01032] Machine States configuration dExecution Management shall
obtain the configuration of Machine States from Function Group "MachineFG"
within the SoftwareCluster with category PLATFORM_CORE.c(RS_EM_00101)
[SWS_EM_CONSTR_02557]{DRAFT} Scope of machine Function Group
dThe function-Group that represents the Machine Function Group group (see
[SWS_EM_CONSTR_02556]) shall only be referenced in the role claimedFunction-
Group by a SoftwareCluster of category PLATFORM_CORE.c(RS_EM_00101)
Please note that according to [constr_1788] there must be exactly one Soft-
wareCluster with category PLATFORM_CORE on each machine.
The start-up sequence from initial state Startup to the point where State Manage-
ment, SM, requests the initial running machine state StateXYZ is illustrated in Figure
7.8.
Figure 7.8: Start-up Sequence – from Startup to initial running state StateXYZ
A successful Function Group state change sequence is illustrated in Figure 7.9. Here,
on receipt of the state change request, Execution Management terminates running
processes and then starts processes active in the new state before confirming the
state change to State Management.
Figure 7.10 shows a Function Group state change which is continued even if a termi-
nation timeout happens. Figure 7.11 shows a Function Group state change which is
aborted because of a start-up timeout.
There are more cases which lead to failure during Function Group state change, which
are not illustrated here. For details see chapter 7.5.5 "State Transition" and chapter
8.2.7.8 "StateClient::SetState".
7.5.2.1 Startup
Please note that for Machine State transitions, the requirements of section Section
7.5.5 apply.
[SWS_EM_02555]{DRAFT} Failure in Machine State Startup transition dExecu-
tion Management shall enter Unrecoverable State in the event of failed transi-
tion to the Startup Machine State.c(RS_EM_00101)
A failure in transition to Startup Machine State is considered as a serious prob-
lem. In that event Execution Management can’t be sure what level of functionality is
available and if a failed state transition can be handled by State Management. It is
worth to note that the State Management itself can be unavailable or its functionality
can be very limited at that point in time.
[SWS_EM_02241] Machine State Startup Completion dUpon completion of initial
(self initiated) Machine State transition to the Startup state, Execution Man-
agement shall make the result of that transition available to State Management
through ara::exec::StateClient::GetInitialMachineStateTransition-
Result API.c(RS_EM_00101)
Please note that the notification in [SWS_EM_02241] is not done via broadcast mes-
sage but has to be requested by State Management via the ara::exec::State-
Client::GetInitialMachineStateTransitionResult API.
The function ara::exec::StateClient::GetInitialMachineStateTransi-
tionResult retrieves the result of the Machine State’s initial transition to the Startup
state. After the Startup state is reached (as described by [SWS_EM_02241]) Execu-
tion Management does not initiate any further Function Group State changes
(this includes Machine State). Instead such changes are requested by State
Management and then performed by Execution Management.
Execution Management will be controlled by other software entities and should
not execute any Function Group State changes on its own (with one exception:
[SWS_EM_01023]). This creates some expectations towards system configuration.
The specification expects that State Management will be configured to run in ev-
ery Machine State (this includes Startup, Shutdown and Restart) [SWS_SM_-
CONSTR_00001]. Above expectation is needed in order to ensure that there is always
a software entity that can introduce changes in the current state of the Machine. If
(for example) system integrator doesn’t configure State Management to be started
in Startup Machine State, then Machine will never be able transit to any other
state and will be stuck forever in it. This also applies to any other Machine State
that doesn’t have State Management configured.
The possibility that the Machine State transition to the Startup state is never
reached shall be taken into account. In this case the State Management can
interrupt the Startup state transition and request e.g. a recovery state using
the ara::exec::StateClient::SetState interface. The ara::exec::State-
Client::GetInitialMachineStateTransitionResult would return the value
kCancelled.
7.5.2.2 Shutdown/Restart
C reference state
A B process transition
Function Group 1
FG1:Off FG1:Running FG1:Off
State
D E
Terminated
C Running
Idle
Terminated
D Running
Idle
Terminated
E Running
Idle
Terminated
F Running
Idle
Process State
different
StartupOptions
System design and integration should ensure that enough resources are available on
the machine at any time, i.e. the added resource consumption of all processes which
reference simultaneously active states should be considered.
[SWS_EM_01107]{OBSOLETE} Function Group configuration dExecution Man-
agement shall obtain configuration of the Function Group from the Processed
Manifest to set-up the Function Group specific state management.c(RS_EM_-
00101)
A proper system configuration requires that each process references in its Ex-
ecution Manifest one or more Function Group States (which can be Ma-
chine States) of the same Function Group. If a process doesn’t reference any
Function Group States it will never be started, for more details please refer to
[SWS_EM_01066] and chapter 7.5.5 State Transition.
[SWS_EM_01013]{OBSOLETE} Function Group State dExecution Management
shall support the execution of a specific Modelled Process, depending on the cur-
rent Function Group State and on information provided in the Execution Man-
ifests.c(RS_EM_00101)
Each Modelled Process is assigned to one or several startup configurations (Star-
tupConfig), which each can define the startup behavior in one or several Function
Group States (including Machine States). For details see [3]. By parsing this
information from the Execution Manifests, Execution Management can de-
termine which Modelled Processes need to be launched if a specific Function
Group State is entered, and which startup parameters are valid.
[SWS_EM_01033] process start-up configuration dTo enable a Modelled Pro-
cess to be launched in multiple Function Group States, Execution Manage-
ment shall be able to configure the process started on every Function Group
State change based on information provided in the Execution Manifest.c(RS_-
EM_00009, RS_EM_00101)
[SWS_EM_02254]{OBSOLETE} Misconfigured process - assigned to more than
one Function Group dDuring a Function Group State transition, any process
involved that references states from more than one Function Group, shall cause
EM to perform following actions:
1. Stop the Function Group State transition, so State Management can de-
cide how to proceed.
2. Log event if needed
3. Set the current Function Group State to Undefined Function Group
State.
4. Report kFailed in the ara::exec::StateClient::SetState interface to
indicate that the State change request cannot be fulfilled.
5. Report the executionError configured for requested Function Group
State via the ara::exec::StateClient::GetExecutionError interface.
c(RS_EM_00101)
Please note AUTOSAR doesn’t support the possibility of assigning a single process
to more than one Function Group, see [3] ([constr_1688]).
[SWS_EM_01110] Off States dEach Function Group (including the Function
Group "MachineFG") has an Off State which shall be used by Execution Man-
agement as initial Function Group State.c(RS_EM_00101)
Within any FunctionGroup, including "MachineFG", the “Off” state is mandatory as
the initial state [TPS_MANI_03195] and cannot have Modelled Processes mapped
according to [constr_3424]. [SWS_EM_01110] and [SWS_EM_01023] together define
the very first Function Group state transition after the power up.
processes reference in their Execution Manifest the states in which they want
to be executed. A state can be any Function Group State, including a Machine
State. For details see [3], especially "State-dependent Startup Configuration" chapter
and "Function Groups" chapter.
The arbitrary state change sequence as shown in Figure 7.9 applies to state changes
of any Function Group - just replace "MachineFG" by the name of the Function
Group. On receipt of the state change request, Execution Management terminates
no longer needed processes and then starts processes active in the new Func-
tion Group State before confirming the state change to State Management. For
details see Section 7.5.5.
Figure 7.13 shows a simplified example for the interaction between different types of
states, after State Management functional cluster has requested different Func-
tion Group States . One can see the state transitions of the Function Group
and the process and Execution States of one process which references one state
of this Function Group, ignoring possible delays and dependencies if several pro-
cesses were involved.
State Management
Arbitration of input data (e.g. state requests, events) to determine current target states
Execution Management
FG1:State1
initial state of
Function State Transition FG1:State2 State Transition FG1:State3
Group “FG1“
(example)
State Transitions
FG1 State managed by EM
Idle Starting
Terminated
(Execution process
Execute Schedule Running Terminate Terminating process
Manifest created,
resources
references resources
freed
FG1:State2) allocated
Process Lifecycle
Process State managed by EM
SIGTERM EXIT_SUCCESS
ReportExecutionState
schedule
Start() (Running) process
terminated
Initializing Terminating
Running
application store data,
create process perform main Terminate
data free resources,
allocate functionality trigger
initialization exit
resources
optional
Execution State
confirm
process
if previous transition ended with error. This is allowed because a failed state transition
is considered as invalid Function Group State.
Since Execution Management allows a new ara::exec::StateClient::Set-
State call to interrupt an ongoing transition and thus change the destination Func-
tion Group State of the transition, it may happen (especially in misconfigured sys-
tem, or during the development phase) that some of ara::exec::StateClient::
SetState requests will be issued by mistake. It is in the best interest of Execution
Management to inform requester (instance of ara::exec::StateClient) of the
ongoing transition, that it had been canceled by a newer request as soon as possible.
FG_A FG_B
ON ABC
XYZ
state
Process
dependency
forbidden dependency
Figure 7.14: Example configuration for state transition
Before we specify how internals of a state transition works, let’s consider an exam-
ple configuration illustrated in figure Figure 7.14. As we can see Execution De-
pendencies that spans outside of a Function Group and moreover of a single
Function Group State are forbidden. The dependency from process B (inside
Function Group FG_B) to process A (inside Function Group FG_A) is forbid-
den, as it would introduce hidden dependencies between Function Groups that are
not visible to State Management. If system configuration requires this kind of depen-
dencies, please see [9] for advice on how to configure them. Dependencies outside
of a single Function Group State definition are forbidden, as they would result in
starting a process that is not configured to run in the given State. For more informa-
tion on Execution Dependencies see chapter Section 7.4.4.1 ([SWS_EM_01001]
and [constr_1689]).
Please note that process B has different Execution Dependencies in Func-
tion Group State ABC and Function Group State XYZ. This configuration
requires existence of two different startup configurations (StateDependentStar-
tupConfig), which in turns will mandate process B restart if State Management
request Function Group State change from ABC to XYZ. This is enforced by
[SWS_EM_02251].
From the above we can conclude that each Function Group is a separate entity
and state transition of one Function Group doesn’t have side effects on another
Function Group. Please note that this is true from the point of view of Execution
Management and may differ from the point of view of State Management (see [9] if
you need more information on this).
In the following requirements the Execution Manifest of a Modelled Process
is the formal modelling of process startup behaviour and is implemented by means
of the aggregation of meta-class StateDependentStartupConfig in the role Pro-
cess ([TPS_MANI_01012]).
The term "the process references a State" indicates a functionGroupState that
references an instance of StateDependentStartupConfig within the Startup-
Config that is applicable for the process associated with the specific Function
Group State.
CurrentState is the current (currently active) State of a Function Group for
which the state transition was requested; or the current Machine State if the Func-
tion Group has "MachineFg" name. In short this is a Function Group State
or Machine State.
RequestedState is the state that will become the CurrentState, once the state
transition finishes successfully.
In other words CurrentState is the starting point of the transition, the list of the pro-
cesses that should be currently running inside the Function Group (please note the
existence of Self-terminating Processes). RequestedState is a destination
point of the state transition, the list of the processes that will be running inside of
the Function Group once the state transition finishes successfully (please note the
existence of Self-terminating Processes).
StartupConfig is a StateDependentStartupConfig that is aggregated in the
role Process.stateDependentStartupConfig for a given process.
State transition is a complicated process, however it is composed out of three simple
logical steps:
• Terminate all processes that are currently running and are not needed in the
RequestedState
• Restart all processes that are currently running and have StartupConfig that
differs between the CurrentState and the RequestedState
• Start all processes that are not running currently and are needed in the Re-
questedState
Please see Section 7.4.1 and Section 7.4.2 for more detail information on how Exe-
cution Management handles termination and start of processes (restart is a se-
quence of termination and start).
[SWS_EM_01060] State transition - termination behavior dOn state transition Ex-
ecution Management shall request termination ([SWS_EM_01055]) of each pro-
cess that references the CurrentState in its Execution Manifest, but does not
reference the RequestedState and has a Process State different than [Idle or
Terminated].c(RS_EM_00101)
[SWS_EM_02251] State transition - restart behavior dOn state transition Execu-
tion Management shall terminate all processes that reference the CurrentState
in its Execution Manifest, but references the RequestedState with different
StartupConfig and have Process State different than [Idle or Terminated].c
(RS_EM_00101)
Please note that [SWS_EM_02251] only request a termination of processes, the start
part will fall under [SWS_EM_01066] requirement thus making the restart complete.
Execution Management monitors the time required by each process to terminate.
The default value of the process termination timeout is defined by the system inte-
grator in the Machine Manifest, see [TPS_MANI_03151]. This value may be over-
written in the startup configuration of individual processes by defining the termination
timeout parameter in the Execution Manifest, see [TPS_MANI_01278].
[SWS_EM_01065] State transition - process termination timeout monitoring d
Execution Management shall monitor the time required by the process to termi-
nate (the time needed by the process to reach the Terminated Process State).c
(RS_EM_00101)
[SWS_EM_02255] State transition - process termination timeout reaction dIn
the event of a process termination timeout (defined by configuration StartupCon-
fig.timeout), Execution Management shall request the Operating System to
forcibly terminate the underlying process.c(RS_EM_00101)
On multi-process POSIX platforms, this could be achieved using a SIGKILL signal.
[SWS_EM_02258] State transition - process termination timeout reporting dWhen
the termination of a process resulted in the timeout, Execution Management shall
log the event, if logging is activated.c(RS_EM_00101)
Execution Management continues a state-transition even in the presence of non-
terminating processes, since the target Function Group State will be reached as
these processes will be killed (see [SWS_EM_02255] and [SWS_EM_01060]). Con-
tinuing in case of a timeout on termination assures in particular, that the Function
Group State "Off" can always be reached (provided that a process termination on
OS level is always successful).
This is different in case of processes that timeout during start-up (see
[SWS_EM_02259]): these processes cannot be forced to start and the Function
Group State will not be reached.
[SWS_EM_01066] State transition - start behavior dOn state transition Execution
Management shall start all processes that references the RequestedState in its
Execution Manifest and have Process State that is [Idle or Terminated].c
(RS_EM_00101)
Execution Management monitors the time required by each process to start. The
start-up timeout is defined per process startup configuration by the system integrator
in the Execution Manifest, see [TPS_MANI_01277].
[SWS_EM_02253] State transition - process start-up timeout monitoring dExe-
cution Management shall monitor the time required by the process to start-up (the
time between Execution Management requesting process creation from the operat-
ing system and the process successfully reporting the Running Process State).c
(RS_EM_00101)
Execution Management monitors the time required by each process to start. The
value of the process start-up timeout is defined by the system integrator in the Exe-
cution Manifest, see [TPS_MANI_01277]. Please note that startup time for Non-
-reporting Processes is zero because Non-reporting Processes immedi-
ately switch from Process State Idle to Running skipping the Starting state.
[SWS_EM_02260] State transition - process start-up timeout reaction dIn the event
of a process start-up timeout (defined by configuration StartupConfig.time-
out), Execution Management shall attempt to restart the process up to num-
berOfRestartAttempts times.c(RS_EM_00101)
process start-up timeout is caused by a malfunction and therefore Execution Man-
agement requests termination of the process by the operating system (e.g. using
SIGKILL) rather than requesting termination through SIGTERM as the process is
assumed to be in an erroneous state.
[SWS_EM_02280] Effect on Execution Dependency dA restart attempt according to
[SWS_EM_02260] shall not fulfill any terminated dependencies.c(RS_EM_00101)
[SWS_EM_02310] State transition - process termination after start-up timeout re-
action dIn case a process start-up timeout occurred after Execution Management
attemted to restart the process numberOfRestartAttempts times, Execution
Management shall request the Operating System to terminate the underlying pro-
cess.c(RS_EM_00101)
[SWS_EM_02259] State transition - process start-up timeout reporting dWhen
the start-up of a process resulted in the timeout, Execution Management shall
perform following actions:
1. Stop the Function Group State transition, so State Management can de-
cide how to proceed.
2. log event, if logging is activated
3. Set the CurrentState to Undefined Function Group State.
4. Report kFailed in the ara::exec::StateClient::SetState interface to
indicate that the State change request cannot be fulfilled.
5. Report the configured executionError via the ara::exec::State-
Client::GetExecutionError interface.
c(RS_EM_00101)
[SWS_EM_02552]{DRAFT} State transition - integrity or authenticity check failed
dWhen the start-up of a process results in the failure of an integrity or authentic-
ity check and strictMode is active ([SWS_EM_02305]), Execution Management
shall perform following actions:
1. Stop the Function Group State transition, so State Management can de-
cide how to proceed.
2. log event, if logging is activated
3. Set the CurrentState to Undefined Function Group State.
4. Report kIntegrityOrAuthenticityCheckFailed in the ara::exec::
StateClient::SetState interface to indicate that the State change request
cannot be fulfilled.
5. Report the configured executionError via the ara::exec::State-
Client::GetExecutionError interface.
c(RS_EM_00101)
[SWS_EM_02312] Order of process start-up timeout reaction dExecution Man-
agement shall perform the terminate reaction [SWS_EM_02310] before reporting to
State Management [SWS_EM_02259].c(RS_EM_00101)
When starting new processes, Execution Management is obligated to perform
dependency resolution. When doing so it may came across a configuration where
process B depends on process A, but process A needs to be restarted during
state change. Another example is a configuration where process D depends on a
Self-terminating Process C to be in Process State Terminated. process
C has to be started and terminated in the requested Function Group State to fulfill
D’s Execution Dependency. Please see Figure 7.15 for more details.
A C B D
Function Group 2
FG2:Off FG2:Running FG2:Fallback
State
different
StartupOptions
Terminated
A Running
Idle
Process State
dependency on process A
“Running“
Terminated
B Running
Idle
Self
Termination
Terminated
C Running
Idle
Terminated
D Running
Idle
dependency on process C
“Terminated“
much clarity as possible, when describing Function Group State transition. Imple-
menters are free to parallelize as much steps (needed for state transition) as possible
for a particular implementation.
Execution Management considers a state transition has been performed success-
fully when the following have occurred:
• Dependency resolution ([SWS_EM_02245]) has identified processes to
start/stop
• All processes expected to terminate have terminated ([SWS_EM_01060])
• All started ([SWS_EM_01066]) or restarted [SWS_EM_02251]) Reporting
Processes have reported kRunning.
[SWS_EM_01067] Actions on Completion State Transition dOn successful comple-
tion of a state transition, Execution Management shall set the CurrentState to
the RequestedState and report success back to State Management.c(RS_EM_-
00101)
[SWS_EM_02313]{OBSOLETE} Unexpected Termination of starting pro-
cesses during Function Group State transition dIn case of Unexpected
Termination during process startup ([SWS_EM_01066]), Execution Manage-
ment shall perform the following actions:
1. Stop the Function Group State transition, so State Management can de-
cide how to proceed.
2. log event, if logging is activated
3. Set the CurrentState to Undefined Function Group State.
4. Report kFailedUnexpectedTerminationOnEnter in the ara::exec::
StateClient::SetState interface to indicate that the State change request
cannot be fulfilled.
5. Report the configured executionError via the ara::exec::State-
Client::GetExecutionError interface.
c(RS_EM_00101)
[SWS_EM_02315] Unexpected Termination of processes configured for the
RequestedState during a Function Group State transition dIn case of Unex-
pected Termination of a process configured for the RequestedState, Execution
Management shall perform the following actions:
1. Stop the Function Group State transition, so State Management can de-
cide how to proceed.
2. log event, if logging is activated
3. Set the CurrentState to Undefined Function Group State.
7.6.1 Determinism
Please note that all requirements in this chapter have been set to obsolete.
In real-time systems, deterministic execution often means, that a calculation of a given
set of input data always produces a consistent output within a bounded time, i.e. the
behavior is reproducible.
It is also worthwhile to note that determinism must be distinguished from other non-
functional qualities like reliability or availability, which all deal in different ways with the
statistical risk of failures. Determinism does not provide such numbers, it only defines
the behavior in the absence of errors.
There are multiple elements in determinism and here we distinguish them as follows:
• Time Determinism: The output of the calculation is always produced before a
given deadline (a point in time).
• Data Determinism: Given the same input and internal state, the calculation al-
ways produces the same output.
• Full Determinism: Combination of Time and Data Determinism as defined above.
In particular, deterministic behavior is important for safety-critical systems, which may
not be allowed to deviate from the specified behavior at all. Whether Time Determin-
ism, or in addition Data Determinism is necessary to provide the required functionality
depends on the system and on the safety goals.
Expected use cases of the AUTOSAR Adaptive Platform where such determinism
is required include:
• Software Lockstep: To execute ASIL C/D applications with high computing perfor-
mance demands, specific measures, such as software lockstep are required, due
to high transient hardware error rates of high performance microprocessors. Soft-
ware lockstep is a technique where the calculation is done redundantly through
two different execution paths and the results are compared. To make the re-
dundant calculations comparable, software lockstep requires a fully deterministic
calculation. For details see 7.6.2.
• Reuse of verified software: The deterministic subsystem shows the same be-
havior on different platforms which satisfy the performance and resource needs
of the subsystem, regardless of other differences in each environment, such as
existence of unrelated applications. Examples include the different development
and simulation platforms. Due to reproducible functional behavior, many results
of testing, configuration and calibration of the subsystem are valid in each envi-
ronment where the subsystem is deployed on and don’t need to be repeated.
Each time a calculation is started, its results are guaranteed to be available before
a specified deadline. To achieve this, sufficient and guaranteed computing resources
(processor time, memory, service response times etc.) should be assigned to the
software entities that perform the calculation. For more information on resources see
chapter 7.7.
Non-deterministic “best-effort” processes can request guaranteed minimum re-
sources for basic functionality, and additionally can have maximum resources specified
for monitoring purposes. However, if Time Determinism is requested, the resources
must be guaranteed at any time, i.e. minimum and maximum resources are identical.
If the assumptions for deterministic execution are violated, e.g. due to a deadline miss,
this is an error detectable by the Application. In non-deterministic “best-effort” subsys-
tems such deadline violations or other deviations from normal behavior sometimes can
be tolerated and mitigated without dedicated error management.
Fully-Deterministic behavior additionally requires Data Determinism, however in many
cases Time Determinism is sufficient.
For Data Determinism, each time a calculation is started, its results only depend on the
input data. For a specific sequence of input data, the results always need to be exactly
the same, assuming the same initial internal state.
A common approach to verify Data Determinism in a safety context is the use of
lockstep mechanisms, where execution is done simultaneously through two different
paths and the result is compared to verify consistency. Hardware lockstep means that
the hardware has specific equipment to make this double-/multi-execution transparent.
Software lockstep is another technique that allows providing a similar property without
requiring the use of dedicated hardware.
Depending on the Safety Level, as well as the Safety Concept employed, software lock-
step may involve executing multiple times the same software, in parallel or sequentially,
but may also involve running multiple separate implementations of the same algorithm.
For Full Determinism, each time a calculation is started, its results are available before
a specified deadline and only depend on the input data, i.e. both Time and Data
Determinism must be guaranteed.
Non-deterministic behavior may arise from different reasons; for example insufficient
computing resources, or uncoordinated access of data, potentially by multiple threads
running on multiple processor cores. The order in which the threads access such data
will affect the result, which makes it non-deterministic (“race condition”).
A fully deterministic calculation must be designed, implemented and integrated in a
way such that it is independent of processor load caused by other functions and cal-
culations, sporadic unrelated events, race conditions, deviating random numbers etc.,
i.e. for the same input and initial conditions it always produces the same result within
a given time.
and the calculated cycle information for next execution to all the connected Deter-
ministicClient. The calculated data of the application processes is published
through Communication Management.
For each execution cycle, the DeterministicSyncMaster synchronizes the De-
terministicClients. It makes sure that random numbers and activation time
stamps that are sent to DeterministicClients are identical for the redundantly ex-
ecution. The DeterministicClients then synchronize the triggering of execution
based on the received activation time stamps. An optional software lockstep framework
may subscribe to the output of the redundant processes and compare the output to
detect failures (e.g. transient processor core or memory errors due to radiation) in
one of the redundant processes. This infrastructure layer can span over multiple
hardware instances and is implementation specific.
The AUTOSAR Adaptive Platform needs to provide some library functions to sup-
port redundant deterministic execution with sufficient isolation. The library functions
(DeterministicClient) run in the context of the user process. Figure 7.16 con-
siders how DeterministicClient can be used in one of the redundantly executed
processes.
user process
no
interaction
worker worker
Register
Services
worker worker
Service
Discovery workers
worker joining
Init
Run
Terminate
GetRandom() GetActivationTime()
GetNextActivationTime()
DeterministicClient
provide activation cycle control, worker pool, random numbers, activation time
access input data synchronization with details not yet publish output data
activation cycle specified
ara::com ara::com
Communication Management
service registration and discovery, provide stable input data, receive output data
Cyclic process behavior is controlled by a wait point API. The API returns a code
to control the process mode (register services/ service discovery/ init/ run/ termi-
nate). The execution is triggered by the ara::exec::DeterministicClient (see
This section describes the APIs shown in Figure 7.16, and how they need to be used
by a process to execute deterministically, so the process can be transparently inte-
grated into a software lockstep environment.
Execution Management provides an API to trigger and control recurring, i.e. cyclic
execution of the main thread code within a process.
[SWS_EM_01301]{OBSOLETE} Cyclic Execution dExecution Management shall
provide a blocking wait point API ara::exec::DeterministicClient::Wait-
ForActivation.c(RS_EM_00052, RS_EM_00113)
After the process has been started by Execution Management, it reports ara::
exec::ExecutionState kRunning (see 7.4.1) and calls ara::exec::Deter-
ministicClient::WaitForActivation.
Note that with respect to [SWS_EM_01352], the deterministic client used by the Ap-
plication detects the cycleTimeValue overrun and reports it to the application. The
Application developer/System Designer can then take the relevant project-specific ac-
tions.
[SWS_EM_01353]{OBSOLETE} Event-triggered Cycle Activation dIf the configured
cycleTimeValue is zero, ara::exec::DeterministicClient::WaitForAc-
tivation shall support event triggered activation.c(RS_EM_00052)
DeterministicSyncMaster provides support for event triggered ara::
exec::DeterministicClient::WaitForActivation (see Section 7.6.4.1)
as well as synchronized cyclic execution. In these cases the return from
ara::exec::DeterministicClient::WaitForActivation is synchronized
through a Synchronization Response Message from DeterministicSyncMaster
[SWS_EM_01326][SWS_EM_01327][SWS_EM_01327].
This cyclic behavior can be used in a software lockstep environment to initialize and
trigger execution of redundant processes and compare the results after a cycle has
finished. For redundant execution, the execution behavior and its budget (activation
timing, computing time, computing resources) should be explicitly visible at integration
time to configure Execution Management accordingly.
Optionally, e.g. if necessary for a software lockstep implementation, all input data as
received via Communication Management should be available when a cycle starts
and guaranteed to be deterministically consistent.
The implementation and size of the worker pool (i.e. number of threads) is hidden from
the Application. The Integrator decides about the size and the implementation and
configures a parameter numberOfWorkers. The distribution of the worker threads to
processor cores is left to the Operating System.
iterator
parameter
object
(container)
1st set of 2nd set of
container container
elements elements
worker
runnable
object
If the number of required container elements exceeds the number of workers (threads)
in the deterministic worker pool, Execution Management can use the worker pool
several times sequentially (with unrestricted interleaving), which shall be transparent
to the user of the worker pool.
To achieve Data Determinism, the parallel workers need to satisfy certain implemen-
tation properties, e.g. no exchange of data is allowed between the instances of the
runnable object which are processed by the workers. For details see [10]. Other, more
complex solutions which allow interaction between the workers would be possible, but
they increase complexity, reduce utilization and transparency, and are error-prone re-
garding the deterministic behavior.
The worker pool runs within the process context of the caller of this API. It is de-
signed as part of Execution Management to guarantee the deterministic behavior
by incorporating it in the ara::exec::DeterministicClient::WaitForActi-
vation cycle.
An example for the implementation of a ara::exec::WorkerRunnable can be
found in [10].
The aim is to abstract the data processing as far as possible, irrespective of the ac-
tual number of available threads. Example: a job with N similar sub-jobs (e.g. N
Kalman-filters). The job is assigned to the worker pool by calling ara::exec::
The deterministic user process might need timing information while cyclically (see
7.6.3.1) processing its input data in the kRun cycle. The used time value may have
an influence on the calculated results. Therefore, Execution Management returns
deterministic timestamps that represent the points in time when the current cycle was
activated and when the next cycle will be activated, if this value is known. The times-
tamps are required to be identical for processes which are executed redundantly, e.g.
in a lockstep environment (see 7.6.2).
[SWS_EM_01310]{OBSOLETE} Get Activation Time dExecution Management
shall provide an API ara::exec::DeterministicClient::GetActivation-
Time which returns an ara::exec::DeterministicClient::TimeStamp that
represents the point in time when the current kRun cycle was activated by ara::
exec::DeterministicClient::WaitForActivation (see [SWS_EM_01301]).
Deterministic means, that the timestamps are identical for processes which are exe-
cuted redundantly. Subsequent calls within a cycle shall always return the same value.c
(RS_EM_00053, RS_EM_00113)
To ensure Time Determinism (see 7.6.1.1), i.e. to make sure that a cyclic deterministic
execution within a process (see 7.6.3.1) is finished at a given deadline we need:
• Execution Management supports deterministic multithreading to meet high
performance demand, see 7.6.3.2.
• The integrator needs to assign appropriate resources to the process, see Sec-
tion 7.7.
• The integrator needs to assign appropriate scheduling policies.
• The integrator needs to configure deadline monitoring, possibly execution budget
monitoring.
To make sure that all processes which use the DeterministicClient APIs get
enough computing resources and can finish their cycle in time, it is in particular impor-
tant to know when the worker pool (ara::exec::DeterministicClient::Run-
WorkerPool) is needed within a kInit and kRun ara::exec::Deterministic-
Client::WaitForActivation cycle. Also, a good computing resource utilization
can only be achieved if usage of the workers (i.e. of available cores) can be distributed
evenly over time. If the application code is known to the integrator, it should not be
a problem to analyze the behavior and configure the system accordingly. However,
if third party “black box” applications are delivered for integration, their resource de-
mands need to be described in a standardized way, so the integrator has a rough idea
about the distribution of resource consumption within a ara::exec::Determinis-
ticClient::WaitForActivation-cycle.
To describe budget needs within the kInit and kRun cycle, we use a normalized value
NormalizedInstruction to specify runtime consumption on the target system.
Examples
Example 7.5
The process uses the worker pool mainly in the middle of the cycle. The first 100
(normalized) instructions are mostly sequential, the next 275 instructions have a benefit
when using the worker pool, and the last 125 instructions are mostly sequential again.
The average speedup, over the complete 500 instructions is 1.3.
• numberOfInstructions = 500
• numberOfWorkers = 2
• speedup = 1.3
• sequentialInstructionsBegin = 100
• sequentialInstructionsEnd = 125
main main
workers
thread thread
NormalizedInstructions
0 100 375 500
begin of end of
cycle cycle
Example 7.6
The process runs sequentially throughout most of the cycle and does not benefit in
using the worker pool, i.e. the overhead of using the worker pool compensates the
parallelization gain.
• numberOfInstructions = 200
• numberOfWorkers = 2
• speedup = 1
• sequentialInstructionsBegin = 200
• sequentialInstructionsEnd = 0
main thread
NormalizedInstructions
0 200
begin of end of
cycle cycle
Example 7.7
The process fully utilizes the worker pool throughout the cycle.
• numberOfInstructions = 200
• numberOfWorkers = 3
• speedup = 2.9
• sequentialInstructionsBegin = 0
• sequentialInstructionsEnd = 0
workers
NormalizedInstructions
0 200
begin of end of
cycle cycle
7.6.4.1 DeterministicSyncMaster
Figure 7.22: Sequence Diagram of the Synchronization Control Messages with single
DeterministicSyncMaster
or other dedicated communication channels. For example the Software Lockstep may
also need to understand the state of each execution cycle, in order to give more reason-
able and trusty comparison results. Figure 7.24 gives examples of a Software Lockstep
framework in library mode and process mode. Details of Software Lockstep will be
specified in a later release.
Figure 7.24: process mode (left) and library mode (right) integration
In this section, we specify the basic elements of the control messages, in order to
run redundant deterministic execution based on platform vendor implementation and
data structure. Dedicated interface(s) and data structure(s) will be specified in a later
release.
time counter reaches the activation timestamp that was sent with the response mes-
sage of the synchronization for the next kRun cycle.c(RS_EM_00050, RS_EM_00053)
[SWS_EM_01328]{OBSOLETE} Immediate return from wait point dA "0" value in the
synchronization response message timestamp [SWS_EM_01326] shall indicate that
ara::exec::DeterministicClient::WaitForActivation call shall return im-
mediately.c(RS_EM_00050, RS_EM_00053)
However, the exact requirements may depend on the specific use case, e.g.
– The RAM consumption might depend on the intended use, e.g. a video filter
might be configurable for different video resolutions, so the resource needs
might vary within a range.
– The computing power required depends on the processor type. i.e. the re-
source demands need to be converted into a computing time on that specific
hardware. Possible parallel thread execution on different cores also needs
to be considered here.
Therefore, while the Application developer should be able to bring estimates re-
garding the resource consumption, a precise usage cannot be provided out of
context.
• Integrator
The integrator knows the specific platform and its available resources and con-
straints, as well as other applications which may run at the same time as the
Modelled Processes to be configured. The integrator should assign avail-
able resources to the applications which can be active at the same time, which
is closely related to State Management configuration, see section 7.5. If not
enough resources are available at any given time to fulfill the maximum resource
needs of all running Modelled Processes, assuming they are actually used
by the Modelled Processes, several steps have to be considered:
– Assignment of resource criticality to Modelled Processes, depending on
safety and functional requirements.
– Depending on the Operating System, maximum resources which cannot be
exceeded by design (e.g. Linux cgroups) can be assigned to a process or a
group of processes.
– A scheduling policy has to be applied, so threads of processes with high
criticality get guaranteed computing time and finish before a given deadline,
while threads of less critical processes might not. For details see section
7.7.3.1.
– If the summarized maximum RAM needs of all processes, which can be
running in parallel at any given time, exceeds the available RAM, this cannot
be solved easily by prioritization, since memory assignment to low critical
processes cannot just be removed without compromising the process.
However, it should be ensured that processes with high criticality have
ready access to their maximum resources at any time, while lower criticality
processes need to share the remaining resources. For details see 7.7.3.4.
Based on the above, all the resource configuration elements are to be configured dur-
ing platform integration, most probably by the Integrator. To group these configuration
elements, we define a ResourceGroup. It may have several properties configured
As far as technically possible, the resources which are actually used by a process
should be controlled at any given time. For the entire system, the monitoring part of
this activity is fulfilled by the Operating System. For details on CPU time monitoring
see 7.7.3.1. For RAM monitoring see 7.7.3.4. The monitoring capabilities depend on
the used Operating System. Depending on system requirements and safety goals,
an appropriate Operating System has to be chosen and configured accordingly, in
combination with other monitoring mechanisms (e.g. for execution deadlines) which
are provided by Platform Health Management.
Resource monitoring can serve several purposes, e.g.
• Detection of misbehavior of the monitored process to maintain the provided
functionality and guarantee functional safety.
• Protection of other parts of the system by isolating the erroneous processes
from unaffected ones to avoid resource shortage.
For processes which are attempting to exceed their configured maximum resource
needs (see 7.7.1), one of the following alternatives is valid:
• The resource limit violation is considered as a failure and recovery actions may
need to be initiated. Therefore the specific violation gets reported to the State
Management, which then starts recovery actions.
• If the OS provides a way to limit resource consumption of a process or a group
of processes by design, explicit external monitoring is usually not necessary
and often not even possible. Instead, the limitation mechanisms make sure that
resource availability for other parts of the system is not affected by failures within
the enclosed processes. When such by-design limitation is used, monitoring
mechanisms may still be used for the benefit of the platform, but are not re-
quired. Self-monitoring and out-of-process monitoring is currently out-of-scope in
AUTOSAR Adaptive Platform.
7.7.3.3 Scheduling
Currently available POSIX compliant Operating Systems offer the scheduling poli-
cies required by POSIX, and in most cases additional, but different and incompatible
scheduling strategies. This means for now, the required scheduling properties need to
be configured individually, depending on the chosen OS.
Moreover, scheduling strategy is defined per thread and the POSIX standard al-
lows for modifying the scheduling policy at runtime for a given thread, using
pthread_setschedparam(). It is therefore not currently possible for the AUTOSAR
Adaptive Platform to enforce a particular scheduling strategy for an entire pro-
cess, but only for its first thread.
[SWS_EM_01014] Scheduling policy dExecution Management shall configure the
process scheduling policy (when launching a process) based on the relevant config-
uration StartupConfig.schedulingPolicy.c(RS_EM_00002)
For the detailed definitions of these policies, refer to [12]. Note, SCHED_OTHER shall be
treated as non real-time scheduling policy, and actual behavior of the policy is imple-
mentation specific. It should not be assumed that the scheduling behavior is compatible
between different AUTOSAR Adaptive Platform implementations, except that it is
a non real-time scheduling policy in a given implementation.
• [SWS_EM_01041] Scheduling FIFO dExecution Management shall be able
to configure FIFO scheduling using policy SCHED_FIFO.c(RS_EM_00002)
• [SWS_EM_01042] Scheduling Round-Robin dExecution Management shall
be able to configure round-robin scheduling using policy SCHED_RR.c(RS_EM_-
00002)
• [SWS_EM_01043] Scheduling Other dExecution Management shall be able
to configure non real-time scheduling using policy SCHED_OTHER.c(RS_EM_-
00002)
Note that the Scheduling Policies specified here are the minimal set. Depending on the
OS there may be more Scheduling Policies configurable.
While scheduling policies are not a sufficient method to guarantee Full Determinism,
they contribute to improve it. While the aim is to limit CPU time for a process, schedul-
ing policies apply to threads.
Note that while Execution Management will ensure the proper configuration for the
first thread (that calls the main() function), it is the responsibility of the process itself
to properly configure secondary threads.
[SWS_EM_01015] Scheduling priority dExecution Management shall support the
configuration of a scheduling priority when launching a process based on the relevant
configuration StartupConfig.schedulingPriority.c(RS_EM_00002)
The available priority range and actual meaning of the scheduling priority depends
on the selected scheduling policy, see [constr_1692], [TPS_MANI_01061] and [TPS_-
MANI_01188] in [3].
In general, for deterministic behavior the required computing time is guaranteed and
violations are treated as errors, while best-effort subsystems are more robust and might
be able to mitigate sporadic violations, e.g. by continuing the calculation at the next
activation, or by providing a result of lesser quality. This means, if time (e.g. deadline
or runtime budget) monitoring is in place, the reaction on deviations is different for
deterministic and best-effort subsystems.
In fact, it may not even be necessary to monitor best-effort subsystems, since they by
definition are doing only a function that may not succeed. This leads to an architecture
where monitoring is an optional property.
The remaining critical property however is to guarantee that a particular process or set
of processes cannot adversely affect the behavior of other processes.
To guarantee Full Determinism for the entire system, it is important to ensure Free-
dom From Interference, which the ResourceGroup contribute to ensure through the
optional partitioning of available CPU and memory for the processes mapped to the
group [SWS_EM_02108].
[SWS_EM_02106] ResourceGroup assignment dExecution Management shall
configure the process according to its ResourceGroup membership.c(RS_EM_-
00005)
processes require memory for their execution (e.g. code, data, heap, thread stacks).
Over the course of its execution however, not all of this memory is required at all times,
such that an OS can take advantage of this property to make these ranges of memory
available on-demand, and provide them to other processes when the memory is no
longer used.
While this has clear advantages in terms of system flexibility as well as memory effi-
ciency, it is also in the way of both Time Determinism and Full Determinism: when a
range of memory that was previously unused should now be made available, the OS
may have to execute some amounts of potentially-unbounded activities to make this
memory available. Often, the reverse may also be happening, removing previously
available (but unused) memory from the process under scope, to make it available to
other processes. This is detrimental to an overall system determinism.
Execution Management should ensure that the entire memory range that determin-
istic processes may be using is available at the start and for the whole duration of the
respective process execution.
Applications not configured to be deterministic may be mapped on-demand.
In order to provide sufficient memory at the beginning of the execution of a process,
some properties may need to be defined for each process.
[SWS_EM_02108] Maximum memory usage dExecution Management shall con-
figure the Maximum memory usage of the process according to the configuration
item Process.stateDependentStartupConfig.resourceConsumption.memo-
ryUsage.c(RS_EM_00005)
Heap
Heap Process A Maintenance
Data
BSS
BSS
Data
Data
Text/Code
Text/Code
with safety where code handling error cases can be preloaded and made guaranteed
to be available. In addition, pre-mapping avoids late issues where filesystem may be
corrupted and part of the Modelled Process may not be loadable anymore.
The working folder of a process is not defined by configuration but rather is deliberately
left as an implementation-specific element. The required PSE51 POSIX profile does
not define that an (Adaptive) Application may use the path or file argument for any
function using a file pathname (e.g., open), instead only to specify the name of the
object without any file system semantics implied.
The PSE51 POSIX profile does not require the existence of a file system. Conse-
quently, paths in Adaptive Applications merely identify objects (e.g. in calls
to open() or stat()). The usage of sub-parts of a given path (e.g. "/data" when
"/data/config.dat" was given) is implementation-defined.
7.8.1 Introduction
What is Fault-Tolerance?
The method of coping with faults within a large-scale software system is termed fault
tolerance.
The model adopted for Execution Management is outlined in [13].
This section provides context to the application of fault tolerance concepts with respect
to Execution Management and perspective on how this contributes in overall plat-
form instance’s dependability.
Platform-wide Service Oriented Architecture fault tolerance aspects are outside the
scope of this document and are not further addressed.
7.8.2 Scope
The main threats which leading to incorrect behavior of software - whether Appli-
cation or Platform Instance - is the presence of systematic defects or faults
i.e. those incorporated during design phase and remaining dormant untill deployment.
Other sources of faults include physical faults, e.g. random hardware failures, that
might influence resource allocation and correct execution, and interraction faults which
can be a source for incorrect state transition requests.
From the perspective of Execution Management, fault activation occures when re-
sulting Function Group State or combination of such is requested. Due to the
different nature of faults, these can lead to various types of deviations from expected
functional behavior and finally result in erroneous system functionality either in terms
of correct computational results or timing response.
In general, the implementation of fault tolerance mechanism is based on two consistent
steps - Error Detection and subsequent Error Recovery. The major focus of
Error Detection during Design Phase activities and thus the focus of Fault
Tolerance in this specification is on the analysis of potential Failure Modes and
the consequent error detection mechanisms that should later be incorporated into the
implementation.
In contrast, Error Recovery consists of actions that should be taken in order to
restore the system’s state where the system can once again perform correct service
delivery. Binding of Error Detection and Recovery Actions should be a subject
of platform wide fault tolerance model.
Remark:The remainder of this section is the subject for elaboration for the next release
of this specification. Provision for fault-tolerance mechanisms will consider possible
faults, how they can lead to errors within Execution Management and the mecha-
nisms that are introduced to ensure error detection.
7.9 Security
From a security perspective, it is essential that all software executed on the Adaptive
Platform is trusted, i.e. the integrity and authenticity of the software is ensured.
Execution Management - as the entity responsible for process creation - has to
take over this task.
A key requirement for a trusted Adaptive Platform is a Trust Anchor on the Machine
that is authentic by definition (hence that alternative name, "root of trust"). A Trust
Anchor is often realized as a public key stored in a secure environment, e.g. in non-
modifiable persistent memory or in an HSM. The trust has to be passed to Execution
Management by appropriate means, e.g. by a chain of trust. If the Machine does not
exhibit a Trust Anchor, it cannot be ensured that the Adaptive Platform is trusted.
[SWS_EM_02299] Availability of a Trust Anchor dIf there is no Trust Anchor avail-
able on the Machine, the following requirements may be ignored: [SWS_EM_02300],
[SWS_EM_02301], [SWS_EM_02302], [SWS_EM_02303], [SWS_EM_02305],
[SWS_EM_02306], [SWS_EM_02307], [SWS_EM_02308], [SWS_EM_02309].c
(RS_EM_00014)
There are many ways to verify the integrity and authenticity of the Adaptive Platform.
A Trusted Platform can be realized e.g. (but not limited to) by
• Verification of the complete Ramdisk by the Bootloader
• Verification of individual Executables and data files, e.g. using OS-
functionalities or a trusted third-party process
• Verification of individual memory pages upon being loaded, e.g. using OS-
functionalities or a trusted third-party process
[SWS_EM_02300] Integrity and Authenticity of Machine configuration dExecu-
tion Management shall ensure that the integrity and authenticity of Machine informa-
tion from the processed Manifests are checked before use.c(RS_EM_00014, RS_-
EM_00015)
[SWS_EM_02301] Integrity and Authenticity of each Executable dExecution
Management shall ensure that for every process that is about to be started, the in-
tegrity and authenticity of the Executable itself are checked.c(RS_EM_00014, RS_-
EM_00015)
[SWS_EM_02302] Integrity and Authenticity of shared objects dExecution Man-
agement shall ensure that for every process that is about to be started, the integrity
and authenticity of each related shared object are checked.c(RS_EM_00014, RS_-
EM_00015)
[SWS_EM_02303] Integrity and Authenticity of processed Execution Manifest
configurations dExecution Management shall ensure that for every process that
The integrity and authenticity of persistent data stored by applications is not considered
here. The Functional Cluster Persistency takes care of the integrity of this data.
If the integrity and authenticity has been verified successfully, the system has to con-
tinue with its regular start-up process. If the integrity and authenticity check has failed,
however, Execution Management offers a configuration option on how to proceed
with the start-up process.
[SWS_EM_02305] Failed authenticity checks dExecution Management shall
select the trusted platform mode based on the value of Machine.trustedPlat-
formExecutableLaunchBehavior.c(RS_EM_00014, RS_EM_00015)
The configuration of the three modes is done via the trustedPlatformExe-
cutableLaunchBehavior attribute within the Processed Manifest. The config-
uration option is only allowed to be processed after the integrity and authenticity of the
relevant Processed Manifest has been verified.
These three modes of the Machine.trustedPlatformExecutableLaunchBe-
havior are:
• monitorMode
• noTrustedPlatformSupport
• strictMode
[SWS_EM_02306]{DRAFT} Launch Behavior Validation dExecution Manage-
ment shall stop the start-up sequence of the Adaptive Platform if the integrity or au-
thenticity check of the Processed Manifest containing the trustedPlatformEx-
ecutableLaunchBehavior selection has failed and switch to the unrecoverable
state.c(RS_EM_00014, RS_EM_00015)
The integrity and authenticity check applies to all trusted platform modes; to do oth-
erwise would leave the system open to attacks that maliciously corrupt the Manifest
information. Reaction to a failure is limited as, by definition, no Adaptive Applications
other than Execution Management are running and hence are restricted to imple-
mentation defined actions such as OS-level logging.
In monitorMode, the integrity and authenticity checks are performed, but the start-up
process is not affected. Hence, the Adaptive Platform starts up even if the file system
has been compromised.
[SWS_EM_02556] Monitor Mode dIn monitorMode, if a check ([SWS_EM_02300],
[SWS_EM_02301], [SWS_EM_02302] and [SWS_EM_02303]) fails then Execution
Management shall log the failure and continue regular startup of the Adaptive Plat-
form.c(RS_EM_00014, RS_EM_00015)
monitorMode is useful when the integrator wants the system to keep running, even if
the platform is not considered trusted. In this case, the integrator might use additional
measures outside the scope of Adaptive AUTOSAR, like e.g. restricted key access
when using an HSM that supports this feature.
monitorMode is also useful during development phase, when frequent changes on
the Adaptive Platform are performed and keeping the authentication tag (e.g. signa-
tures) valid is a tedious task.
Following the "Principle of Least Privilege", Identity and Access Management (IAM)
[15] was introduced in the Adaptive Platform. IAM allows to assign permissions to Mod-
elled Processes for accessing public Interfaces from Functional Clusters. Hence,
Modelled Processes have to be identifiable during runtime in order to lookup and
enforce permissions accordingly.
Execution Management starts processes based on Modelled Processes.
Hence Execution Management is able to maintain the association between the two.
Execution Management supports IAM by revealing information about this associ-
ation. This allows IAM to authenticate processes during runtime with the help of the
operating system and Execution Management.
[SWS_EM_02400] Properties of IAM-configuration assigned to processes dExe-
cution Management shall associate the identity of a specific Modelled Process
with the identity of the corresponding process during process creation.c(RS_EM_-
00111, RS_EM_00015)
The form of identity is implementation specifc but could, for example, be the process
identifier, a cryptographic token, user ID, etc.
Based on implementation requirements, Execution Management may expose inter-
faces that allow IAM to retrieve information about the association between process
and Modelled Process identity. The exact form of this interface is implementation
defined.
8 API specification
8.1.1 ExecutionState
c(RS_EM_00103, RS_AP_00134)
Please note that ExecutionState includes only states reportable by the process to
Execution Management and therefore does not include enumerations e.g. the "Ini-
tializing" state mentioned in figure 7.3 and 7.13, which are an implied states for Exe-
cution Management. The Initializing state starts when process is first scheduled
(so no code executed yet) and ends when kRunning is reported ([SWS_EM_01004]).
The Terminating state starts when termination is requested by Execution Manage-
ment and ends when the process terminates ([SWS_EM_01404]). For the reasons
mentioned, Execution Management assumes that process is in initializing state
until kRunning will be reported by it.
8.1.2 ActivationReturnType
4
Values: kRegisterServices= 0 application shall register communication services(this must be the
only occasion for performing service registering)
kServiceDiscovery= 1 application shall do communication service discovery (this must be
the only occasion for performing service discovery)
kInit= 2 application shall initialize its internal data structures (once)
kRun= 3 application shall perform its normal operation
kTerminate= 4 deterministic execution shall terminate
Description: Defines the return codes for WaitForActivation operations. Scoped Enumeration of uint32_t .
8.1.3 DeterministicClient::TimeStamp
8.1.4 ExecutionError
8.1.5 ExecutionErrorEvent
8.1.5.1 ExecutionErrorEvent::executionError
c(RS_EM_00101, RS_AP_00124)
8.1.5.2 ExecutionErrorEvent::functionGroup
c(RS_EM_00101, RS_AP_00124)
The Execution State API provides the functionality for a process to report its state to
the Execution Management.
[SWS_EM_02001] Definition of API class ara::exec::ExecutionClient d
Kind: class
Header file: #include "ara/exec/execution_client.h"
Forwarding header file: #include "ara/exec/exec_fwd.h"
Scope: namespace ara::exec
Symbol: ExecutionClient
Syntax: class ExecutionClient final {...};
Description: Class to implement operations on Execution Client.
Notes: To eventually implement the Named Constructor Idiom, the developer may either make the
default constructor private or delete it and define a non-default constructor.
8.2.1.1 ExecutionClient::ExecutionClient
4
Parameters (in): terminationHandler Callback which is called if ExecutionClient receives SIGTERM
signal. The callback is executed in a background thread. A typical
implementation of this callback will set a global flag (and potentially
unblock other threads) to perform a graceful termination. The
lifetime of the given function has to exceed the lifetime of the
ExecutionClient object.
Exception Safety: not exception safe
Errors: ara::exec::ExecErrc::k Communication error occurred.
CommunicationError
ara::exec::ExecErrc::k Given terminationHandler doesn’t contain a callable function.
InvalidArgument
Description: Regular constructor for ExecutionClient.
8.2.1.2 ExecutionClient::Create
8.2.1.3 ExecutionClient::~ExecutionClient
c(RS_AP_00145, RS_EM_00103)
c(RS_AP_00145, RS_EM_00103)
8.2.1.8 ExecutionClient::ReportExecutionState
4
Parameters (in): state Value of the Execution State
Return value: ara::core::Result< void > An instance of ara::core::Result. The instance holds an ErrorCode
containing either one of the specified errors or a void-value.
Exception Safety: noexcept
Errors: ara::exec::ExecErrc::k Communication error between Application and Execution
CommunicationError Management, e.g. unable to report state for Non-reporting Process.
ara::exec::ExecErrc::k Invalid transition request (e.g. to Running when already in Running
InvalidTransition state)
Description: Interface for a Process to report its internal state to Execution Management.
Please note that all requirements in this chapter have been set to obsolete.
The WorkerRunnable class provides a base-class defining the expected interface for
DeterministicClient worker definition.
[SWS_EM_02510]{OBSOLETE} Definition of API class ara::exec::Worker
Runnable d
Kind: class
Header file: #include "ara/exec/worker_runnable.h"
Forwarding header file: #include "ara/exec/exec_fwd.h"
Scope: namespace ara::exec
Symbol: WorkerRunnable
Syntax: template <typename ValueType>
class WorkerRunnable {...};
Template param: typename ValueType Value type of Container passed to DeterministicClient::RunWorker
Pool
Description: Base-class for implementation of worker runnable for Deterministic Client.
8.2.2.1 WorkerRunnable::Destructor
4
Symbol: ~WorkerRunnable()
Syntax: virtual ~WorkerRunnable ();
Exception Safety: not exception safe
Description: Destructor .
c(RS_EM_00052)
8.2.2.2 WorkerRunnable::WorkerRunnable
c(RS_EM_00052)
[SWS_EM_02514]{OBSOLETE} Definition of API function ara::exec::Worker
Runnable::WorkerRunnable d
Kind: function
Header file: #include "ara/exec/worker_runnable.h"
Scope: class ara::exec::WorkerRunnable
Symbol: WorkerRunnable(WorkerRunnable &&obj)
Syntax: WorkerRunnable (WorkerRunnable &&obj)=delete;
Description: Move constructor.
c(RS_EM_00052)
[SWS_EM_02511]{OBSOLETE} Definition of API function ara::exec::Worker
Runnable::WorkerRunnable d
Kind: function
Header file: #include "ara/exec/worker_runnable.h"
Scope: class ara::exec::WorkerRunnable
Symbol: WorkerRunnable()
Syntax: WorkerRunnable ();
Exception Safety: not exception safe
Description: Constructor .
c(RS_EM_00052)
c(RS_EM_00052)
8.2.2.4 WorkerRunnable::Run
Please note that all requirements in this chapter have been set to obsolete.
The WorkerThread class provides class defining the expected interface for Deter-
ministicClient worker threads, in particular, access to deterministic random num-
bers. Users can extend this class in order to provide common methods for all threads.
Therefore, the class is not declared as a final.
8.2.3.1 WorkerThread::WorkerThread
c(RS_EM_00052, RS_AP_00122)
[SWS_EM_02533]{OBSOLETE} Definition of API function ara::exec::Worker
Thread::WorkerThread d
Kind: function
Header file: #include "ara/exec/worker_thread.h"
Scope: class ara::exec::WorkerThread
Symbol: WorkerThread(const WorkerThread &obj)
Syntax: WorkerThread (const WorkerThread &obj)=delete;
Description: copy constructor
c(RS_EM_00052)
[SWS_EM_02534]{OBSOLETE} Definition of API function ara::exec::Worker
Thread::WorkerThread d
Kind: function
Header file: #include "ara/exec/worker_thread.h"
Scope: class ara::exec::WorkerThread
Symbol: WorkerThread(WorkerThread &&obj)
5
4
Syntax: WorkerThread (WorkerThread &&obj)=delete;
Description: Move constructor.
c(RS_EM_00052)
8.2.3.2 WorkerThread::~WorkerThread
c(RS_EM_00052)
8.2.3.4 WorkerThread::GetRandom
4
Symbol: GetRandom()
Syntax: std::uint64_t GetRandom () noexcept;
Return value: std::uint64_t Deterministic random number
Exception Safety: noexcept
Description: Returns a deterministic pseudo-random number which is unique for each container element.
Please note that all requirements in this chapter have been set to obsolete.
The DeterministicClient class provides the functionality for an Application
to run a cyclic deterministic execution, see 7.6.3. Each Modelled Process which
needs support for cyclic deterministic execution has to instantiate this class.
[SWS_EM_02210]{OBSOLETE} Definition of API class ara::exec::Deterministic
Client d
Kind: class
Header file: #include "ara/exec/deterministic_client.h"
Forwarding header file: #include "ara/exec/exec_fwd.h"
Scope: namespace ara::exec
Symbol: DeterministicClient
Syntax: class DeterministicClient final {...};
Description: Class to implement operations on Deterministic Client .
8.2.4.1 DeterministicClient::DeterministicClient
4
Description: Constructor for DeterministicClient which opens the Execution Management communication
channel (e.g. POSIX FIFO) to access a wait point for cyclic execution, a worker pool,
deterministic random numbers and time stamps .
8.2.4.2 DeterministicClient::~DeterministicClient
8.2.4.3 DeterministicClient::WaitForActivation
8.2.4.4 DeterministicClient::RunWorkerPool
8.2.4.5 DeterministicClient::GetRandom
4
Description: Return deterministic sequence of random numbers.
This returns the next in a sequence of ‘Deterministic’ random numbers. Deterministic’ means,
that the returned random numbers are identical within redundant DeterministicClient::WaitFor
Activation() cycles, which are used within redundantly executed Processes.
8.2.4.6 DeterministicClient::SetRandomSeed
8.2.4.7 DeterministicClient::GetActivationTime
8.2.4.8 DeterministicClient::GetNextActivationTime
An instance of this class will represent Function Group defined inside meta-model
(ARXML). This class is intended to be an implementation specific representation, of
information inside meta-model. Once created based on ARXML path, its internal value
stays bounded to it for entire lifetime of a object.
[SWS_EM_02263]{OBSOLETE} Definition of API class ara::exec::FunctionGroup
d
Kind: class
Header file: #include "ara/exec/function_group.h"
Forwarding header file: #include "ara/exec/exec_fwd.h"
Scope: namespace ara::exec
Symbol: FunctionGroup
Syntax: class FunctionGroup final {...};
Description: Class representing Function Group defined in meta-model (ARXML).
Notes: Once created based on ARXML path, it’s internal value stay bounded to it for entire lifetime of an
object.
8.2.5.1 FunctionGroup::Create
c(RS_EM_00101)
8.2.5.2 FunctionGroup::FunctionGroup
c(RS_EM_00101)
c(RS_EM_00101)
c(RS_EM_00101)
c(RS_EM_00101)
c(RS_EM_00101)
8.2.5.7 FunctionGroup::~FunctionGroup
c(RS_EM_00101)
8.2.5.8 FunctionGroup::operator==
4
Return value: bool true in case both FunctionGroups are representing exactly the
same meta-model element, false otherwise.
Exception Safety: noexcept
Thread Safety: Thread-safe
Description: eq operator to compare with other FunctionGroup instance.
c(RS_EM_00101)
8.2.5.9 FunctionGroup::operator!=
c(RS_EM_00101)
An instance of this class will represent Function Group State defined inside meta-
model (ARXML). This class is intended to be an implementation specific representa-
tion, of information inside meta-model. Once created based on ARXML path, its inter-
nal value stays bounded to it for entire lifetime of a object.
[SWS_EM_02269] Definition of API class ara::exec::FunctionGroupState d
Kind: class
Header file: #include "ara/exec/function_group_state.h"
Forwarding header file: #include "ara/exec/exec_fwd.h"
Scope: namespace ara::exec
Symbol: FunctionGroupState
Syntax: class FunctionGroupState final {...};
Description: Class representing Function Group State defined in meta-model (ARXML).
Notes: Once created based on ARXML path, it’s internal value stay bounded to it for entire lifetime of an
object.
8.2.6.1 FunctionGroupState::Create
c(RS_EM_00101)
8.2.6.2 FunctionGroupState::FunctionGroupState
c(RS_EM_00101)
c(RS_EM_00101, RS_AP_00145)
4
Parameters (in): other FunctionGroupState instance to be copied
Return value: FunctionGroupState & –
Exception Safety: noexcept
Description: Copy assignment operator.
8.2.6.7 FunctionGroupState::~FunctionGroupState
8.2.6.8 FunctionGroupState::operator==
c(RS_EM_00101)
8.2.6.9 FunctionGroupState::operator!=
c(RS_EM_00101)
Class used to perform Function Group state management operation needed during
lifetime of a Machine. State Management during its own lifetime will need to start
and stop software, that is intended to run on a Machine managed by it. This can
be achieved by performing state transition of a Function Group to which required
software is assigned. Integrator will assign software to run in a particular state (of
Function Group) and State Management can start it, by requesting Execution
Management to perform state transition (of this Function Group) to the mentioned
state. Execution Management will then start mentioned software and report tran-
sition result back to State Management. Please note that stopping software can be
done in similar way (i.e. Function Group state transition, to a state in which software
is not configured to be run).
[SWS_EM_02275] Definition of API class ara::exec::StateClient d
Kind: class
Header file: #include "ara/exec/state_client.h"
Forwarding header file: #include "ara/exec/exec_fwd.h"
Scope: namespace ara::exec
Symbol: StateClient
Syntax: class StateClient final {...};
Description: StateClient is an interface of Execution Management that is used by State Management to
request transitions between Function Group States or to perform other related operations.
Notes: StateClient opens communication channel to Execution Management (e.g. POSIX FIFO). Each
Process that intends to perform state management, should create an instance of this class and it
should have rights to use it. To eventually implement the Named Constructor Idiom, the
developer may either make the default constructor private or delete it and define a non-default
constructor.
8.2.7.1 StateClient::StateClient
8.2.7.2 StateClient::Create
8.2.7.3 StateClient::~StateClient
c(RS_AP_00145, RS_EM_00103)
c(RS_AP_00145, RS_EM_00103)
8.2.7.8 StateClient::SetState
Errors: ara::exec::ExecErrc::k if transition to the requested Function Group state was cancelled by
Cancelled a newer request
ara::exec::ExecErrc::k if transition to the requested Function Group state failed
Failed
ara::exec::ExecErrc::k if Unexpected Termination in Process of target Function Group
FailedUnexpected State happened.
TerminationOnEnter
ara::exec::ExecErrc::k if StateClient can’t communicate with Execution Management (e.g.
CommunicationError IPC link is down)
ara::exec::ExecErrc::k if transition to the requested state is prohibited (e.g. Off state for
InvalidTransition MachineFG) or the requested Function Group State is invalid (e.g.
does not exist anymore after a software update)
ara::exec::ExecErrc::k if an integrity or authenticity check failed during state transition.
IntegrityOrAuthenticity
CheckFailed
5
4
ara::exec::ExecErrc::k One of the processes terminated in an unexpected way during the
FailedUnexpected state transition.
Termination
ara::exec::ExecErrc::k The given Function Group State couldn’t be found in the Processed
MetaModelError Manifest.
Description: Method to request state transition for a single Function Group.
This method will request Execution Management to perform state transition and return
immediately. Returned ara::core::Future can be used to determine result of requested transition.
8.2.7.9 StateClient::GetInitialMachineStateTransitionResult
4
Notes: This method allows State Management to retrieve the result of a transition specified by SWS_
EM_01023 and SWS_EM_02241. Please note that this transition happens once per machine life
cycle, thus the result delivered by this method shall not change (unless machine is started
again).
8.2.7.10 StateClient::GetExecutionError
c(RS_EM_00152)
[SWS_EM_02570]{DRAFT} LogMessage ProcessKRunningReceived d
Dlt-Message ProcessKRunningReceived
Description Message that is sent by the Execution Management when the Execution Management received a k
Running from ara::exec::ExecutionClient::ReportExecutionState.
MessageId 0x80004002
MessageType DLT_TRACE_VFB
Info
Dlt-Argument ArgumentDescription ArgumentType ArgumentUnit
processId OS specific PID which has been assigned to the process. uint32 NoUnit
received_k received kRunning. predefined text
Running
c(RS_EM_00152)
[SWS_EM_02571]{DRAFT} LogMessage ProcessTerminationRequest d
Dlt-Message ProcessTerminationRequest
Description Message that is sent by the Execution Management when the Execution Management requested to
terminate a process.
MessageId 0x80004003
MessageType DLT_TRACE_VFB
Info
Dlt-Argument ArgumentDescription ArgumentType ArgumentUnit
execution_ Execution Management requested to terminate predefined text
management_
requested_to_
terminate
processId OS specific PID which has been assigned to the process. uint32 NoUnit
c(RS_EM_00152)
c(RS_EM_00152)
8.4 Errors
The Execution Management cluster implements an error handling based on ara::
core::Result. The errors supported by the Execution Management cluster are
listed in section 8.4.1.
8.4.2.1 ExecException::ExecException
8.4.5.1 ExecErrorDomain::ExecErrorDomain
4
Symbol: ExecErrorDomain()
Syntax: ExecErrorDomain () noexcept;
Exception Safety: noexcept
Description: Constructs a new ExecErrorDomain object.
8.4.5.2 ExecErrorDomain::Name
8.4.5.3 ExecErrorDomain::Message
8.4.5.4 ExecErrorDomain::ThrowAsException
9 Service Interfaces
This chapter lists all provided and required service interfaces of the Execution Man-
agement.
There are no service interfaces defined in this release.
Class ExecutionDependency
Package M2::AUTOSARTemplates::AdaptivePlatform::ExecutionManifest
Note This element defines a ProcessState in which a dependent process needs to be before the process that
aggregates the ExecutionDependency element can be started.
Base ARObject
Aggregated by StateDependentStartupConfig.executionDependency
Attribute Type Mult. Kind Note
processState ModeDeclaration 0..1 iref This represent the applicable modeDeclaration that
represents an ProcessState.
InstanceRef implemented by: ModeInProcessInstance
Ref
Table A.2: ExecutionDependency
Enumeration ExecutionStateReportingBehaviorEnum
Package M2::AUTOSARTemplates::AdaptivePlatform::ApplicationDesign::ApplicationStructure
Note This enumeration provides options for controlling of how an Executable reports its execution state to
the Execution Management
Aggregated by Executable.reportingBehavior
Literal Description
doesNotReport The Executable shall not report its execution state to the Execution Management.
ExecutionState
Tags: atp.EnumerationLiteralIndex=1
reportsExecution The Executable shall report its execution state to the Execution Management.
State
Tags: atp.EnumerationLiteralIndex=0
Class Machine
Package M2::AUTOSARTemplates::AdaptivePlatform::MachineManifest
Note Machine that represents an Adaptive Autosar Software Stack.
Tags: atp.recommendedPackage=Machines
Base ARElement, ARObject, AtpClassifier , AtpFeature, AtpStructureElement, CollectableElement,
Identifiable, MultilanguageReferrable, PackageableElement, Referrable, UploadableDeployment
Element, UploadablePackageElement
Aggregated by ARPackage.element, AtpClassifier .atpFeature
Attribute Type Mult. Kind Note
default EnterExitTimeout 0..1 aggr This aggregation defines a default timeout in the context
Application of a given Machine with respect to the launching and
Timeout termination of applications.
environment TagWithOptionalValue * aggr This aggregation represents the collection of environment
Variable variables that shall be added to the environment defined
on the level of the enclosing Machine.
Stereotypes: atpSplitable
Tags: atp.Splitkey=environmentVariable
machineDesign MachineDesign 0..1 ref Reference to the MachineDesign this Machine is
implementing.
module AdaptiveModule * aggr Configuration of Adaptive Autosar module instances that
Instantiation Instantiation are running on the machine.
Stereotypes: atpSplitable
Tags: atp.Splitkey=moduleInstantiation.shortName
processor Processor * aggr This represents the collection of processors owned by the
enclosing machine.
secure SecureCommunication * aggr Deployment of secure communication protocol
Communication Deployment configuration settings to crypto module entities.
Deployment
Stereotypes: atpSplitable
Tags: atp.Splitkey=secureCommunication
Deployment.shortName
trustedPlatform TrustedPlatform 0..1 attr This attribute controls the behavior of how authentication
Executable ExecutableLaunch affects the ability to launch for each Executable.
LaunchBehavior BehaviorEnum
Table A.4: Machine
Class ModeDeclaration
Package M2::AUTOSARTemplates::CommonStructure::ModeDeclaration
Note Declaration of one Mode. The name and semantics of a specific mode is not defined in the meta-model.
Base ARObject, AtpClassifier , AtpFeature, AtpStructureElement, Identifiable, MultilanguageReferrable,
Referrable
Aggregated by AtpClassifier .atpFeature, ModeDeclarationGroup.modeDeclaration
Attribute Type Mult. Kind Note
value PositiveInteger 0..1 attr The RTE shall take the value of this attribute for
generating the source code representation of this Mode
Declaration.
Table A.5: ModeDeclaration
Class ModeDeclarationGroup
Package M2::AUTOSARTemplates::CommonStructure::ModeDeclaration
Note A collection of Mode Declarations. Also, the initial mode is explicitly identified.
Tags: atp.recommendedPackage=ModeDeclarationGroups
Base ARElement, ARObject, AtpBlueprint, AtpBlueprintable, AtpClassifier , AtpType, CollectableElement,
Identifiable, MultilanguageReferrable, PackageableElement, Referrable, UploadableDesignElement,
UploadablePackageElement
Aggregated by ARPackage.element
Attribute Type Mult. Kind Note
initialMode ModeDeclaration 0..1 ref The initial mode of the ModeDeclarationGroup. This
mode is active before any mode switches occurred.
mode ModeDeclaration * aggr The ModeDeclarations collected in this ModeDeclaration
Declaration Group.
Stereotypes: atpSplitable; atpVariation
Tags:
atp.Splitkey=modeDeclaration.shortName, mode
Declaration.variationPoint.shortLabel
vh.latestBindingTime=blueprintDerivationTime
Class ModeDeclarationGroupPrototype
Package M2::AUTOSARTemplates::CommonStructure::ModeDeclaration
Note The ModeDeclarationGroupPrototype specifies a set of Modes (ModeDeclarationGroup) which is
provided or required in the given context.
Base ARObject, AtpFeature, AtpPrototype, Identifiable, MultilanguageReferrable, Referrable
Aggregated by AtpClassifier .atpFeature, BswModuleDescription.providedModeGroup, BswModuleDescription.required
ModeGroup, FirewallStateSwitchInterface.firewallStateMachine, FunctionGroupSet.functionGroup, Mode
SwitchInterface.modeGroup, Process.processStateMachine, StateManagementStateNotification.state
Machine
Attribute Type Mult. Kind Note
type ModeDeclarationGroup 0..1 tref The "collection of ModeDeclarations" ( = ModeDeclaration
Group) supported by a component
Stereotypes: isOfType
Primitive NormalizedInstruction
Package M2::AUTOSARTemplates::GenericStructure::GeneralTemplateClasses::PrimitiveTypes
Note This meta-class is used to describe runtime budget needs on the target system within Deterministic
Client::WaitForActivation cycles. NormalizedInstructions does not reflect the actual number of code
instructions, but allows the description of comparative resource needs. NormalizedInstructions is used for
configuration of computing resources at integration time.
NormalizedInstruction = runtime in sec * clock frequency in Hz
Tags:
atp.Status=draft
xml.xsd.customType=NORMALIZED-INSTRUCTION
xml.xsd.pattern=[1-9][0-9]*
xml.xsd.type=string
Class Process
Package M2::AUTOSARTemplates::AdaptivePlatform::ExecutionManifest
Note This meta-class provides information required to execute the referenced Executable.
Tags: atp.recommendedPackage=Processes
Base ARElement, ARObject, AbstractExecutionContext, AtpClassifier , CollectableElement, Identifiable,
MultilanguageReferrable, PackageableElement, Referrable, UploadableDeploymentElement, Uploadable
PackageElement
Aggregated by ARPackage.element
Attribute Type Mult. Kind Note
design ProcessDesign 0..1 ref This reference represents the identification of the
design-time representation for the Process that owns the
reference.
executable Executable * ref Reference to executable that is executed in the process.
Stereotypes: atpUriDef
functionCluster String 0..1 attr This attribute specifies which functional cluster the
Affiliation Process is affiliated with.
numberOf PositiveInteger 0..1 attr This attribute defines how often a process shall be
RestartAttempts restarted if the start fails.
numberOfRestartAttempts = "0" OR Attribute not existing,
start once
numberOfRestartAttempts = "1", start a second time
preMapping Boolean 0..1 attr This attribute describes whether the executable is
preloaded into the memory.
processState ModeDeclarationGroup 0..1 aggr Set of Process States that are defined for the process.
Machine Prototype
securityEvent SecurityEventDefinition * ref The reference identifies the collection of SecurityEvents
that can be reported by the Process.
Stereotypes: atpSplitable; atpUriDef
Tags:
atp.Splitkey=securityEvent
atp.Status=candidate
stateDependent StateDependentStartup * aggr Applicable startup configurations.
StartupConfig Config
Class ProcessArgument
Package M2::AUTOSARTemplates::AdaptivePlatform::ExecutionManifest
Note This meta-class has the ability to define command line arguments for processing by the Main function.
Base ARObject
Aggregated by StartupConfig.processArgument
Attribute Type Mult. Kind Note
argument String 0..1 attr This represents one command-line argument to be
processed by the executable software.
Class ProcessToMachineMapping
Package M2::AUTOSARTemplates::AdaptivePlatform::MachineManifest
Note This meta-class has the ability to associate a Process with a Machine. This relation involves the definition
of further properties, e.g. timeouts.
Base ARObject, Identifiable, MultilanguageReferrable, Referrable
Aggregated by ProcessToMachineMappingSet.processToMachineMapping
Attribute Type Mult. Kind Note
design ProcessDesignTo 0..1 ref This reference represents the identification of the
MachineDesignMapping design-time representation for the ProcessToMachine
Mapping that owns the reference.
machine Machine 0..1 ref This reference identifies the Machine in the context of the
ProcessToMachineMapping.
nonOsModule NonOsModule 0..1 ref This supports the optional case that the process
Instantiation Instantiation represents a platform module.
persistency UriString 0..1 attr This attribute identifies a central place for the mapped
CentralStorage Process to store the list of available storages and version
URI information.
process Process 0..1 ref This reference identifies the Process in the context of the
ProcessToMachineMapping.
shallNotRunOn ProcessorCore * ref This reference indicates a collection of cores onto which
the mapped process shall not be executing.
shallRunOn ProcessorCore * ref This reference indicates a collection of cores onto which
the mapped process shall be executing.
4
Class Referrable (abstract)
shortName Identifier 1 attr This specifies an identifying shortName for the object. It
needs to be unique within its context and is intended for
humans but even more for technical reference.
Stereotypes: atpIdentityContributor
Tags:
xml.enforceMinMultiplicity=true
xml.sequenceOffset=-100
shortName ShortNameFragment * aggr This specifies how the Referrable.shortName is
Fragment composed of several shortNameFragments.
Tags: xml.sequenceOffset=-90
Class ResourceConsumption
Package M2::AUTOSARTemplates::CommonStructure::ResourceConsumption
Note Description of consumed resources by one implementation of a software.
Base ARObject, Identifiable, MultilanguageReferrable, Referrable
Aggregated by EcuResourceEstimation.bswResourceEstimation, EcuResourceEstimation.rteResourceEstimation,
Implementation.resourceConsumption, StateDependentStartupConfig.resourceConsumption
Attribute Type Mult. Kind Note
memoryUsage MemoryUsage * aggr Collection of the memory allocated by the owner.
Stereotypes: atpSplitable
Tags: atp.Splitkey=memoryUsage.shortName
Class ResourceGroup
Package M2::AUTOSARTemplates::AdaptivePlatform::PlatformModuleDeployment::AdaptiveModule
Implementation
Note This meta-class represents a resource group that limits the resource usage of a collection of processes.
Base ARObject, Identifiable, MultilanguageReferrable, Referrable
Aggregated by OsModuleInstantiation.resourceGroup
Attribute Type Mult. Kind Note
cpuUsage PositiveInteger 0..1 attr CPU resource limit in percentage of the total CPU
capacity on the machine.
memUsage PositiveInteger 0..1 attr Memory limit in bytes.
Class SoftwareCluster
Package M2::AUTOSARTemplates::AdaptivePlatform::SoftwareDistribution
Note This meta-class represents the ability to define an uploadable software-package, i.e. the SoftwareCluster
shall contain all software and configuration for a given purpose.
Tags: atp.recommendedPackage=SoftwareClusters
Base ARElement, ARObject, CollectableElement, Identifiable, MultilanguageReferrable, Packageable
Element, Referrable, UploadableDeploymentElement, UploadablePackageElement
Aggregated by ARPackage.element
Attribute Type Mult. Kind Note
5
4
Class SoftwareCluster
artifact ArtifactChecksum * aggr This aggregation carries the checksums for artifacts
Checksum contained in the enclosing SoftwareCluster. Please note
that the value of these checksums is only applicable at
the time of configuration.
Stereotypes: atpSplitable
Tags: atp.Splitkey=artifactChecksum.shortName, artifact
Checksum.uri
artifactLocator ArtifactLocator * aggr This aggregation represents the artifact locations that are
relevant in the context of the enclosing SoftwareCluster
claimed ModeDeclarationGroup * ref Each SoftwareCluster can reserve the usage of a given
FunctionGroup Prototype functionGroup such that no other SoftwareCluster is
allowed to use it
conflictsTo SoftwareCluster 0..1 aggr This aggregation handles conflicts. If it yields true then
DependencyFormula the SoftwareCluster shall not be installed.
Stereotypes: atpSplitable
Tags: atp.Splitkey=conflictsTo
contained ARElement * ref This reference represents the collection of model
ARElement elements that cannot derive from UploadablePackage
Element and that contribute to the completeness of the
definition of the SoftwareCluster.
Stereotypes: atpSplitable
Tags: atp.Splitkey=containedARElement
containedFibex FibexElement * ref This allows for referencing FibexElements that need to be
Element considered in the context of a SoftwareCluster.
contained UploadablePackage * ref This reference identifies model elements that are required
Package Element to complete the manifest content.
Element
Stereotypes: atpSplitable
Tags: atp.Splitkey=containedPackageElement
contained Process * ref This reference represent the processes contained in the
Process enclosing SoftwareCluster.
dependsOn SoftwareCluster 0..1 aggr This aggregation can be taken to identify a dependency
DependencyFormula for the enclosing SoftwareCluster.
Stereotypes: atpSplitable
Tags: atp.Splitkey=dependsOn
design SoftwareClusterDesign * ref This reference represents the identification of all Software
ClusterDesigns applicable for the enclosing Software
Cluster.
Stereotypes: atpUriDef
diagnostic SoftwareCluster 0..1 ref This reference identifies the applicable SoftwareCluster
Deployment DiagnosticDeployment DiagnosticDeploymentProps that are applicable for the
Props Props referencing SoftwareCluster.
installation SoftwareCluster 0..1 attr This attribute controls the behavior of the SoftwareCluster
Behavior InstallationBehavior in terms of installation.
Enum
license Documentation * ref This attribute allows for the inclusion of the full text of a
license of the enclosing SoftwareCluster. In many cases
open source licenses require the inclusion of the full
license text to any software that is released under the
respective license.
module AdaptiveModule * ref This reference identifies AdaptiveModuleInstantiations
Instantiation Instantiation that need to be included with the SoftwareCluster in order
to establish infrastructure required for the installation of
the SoftwareCluster.
Stereotypes: atpSplitable
Tags: atp.Splitkey=moduleInstantiation
5
4
Class SoftwareCluster
releaseNotes Documentation 0..1 ref This attribute allows for the explanations of changes since
the previous version. The list of changes might require
the creation of multiple paragraphs of test.
typeApproval String 0..1 attr This attribute carries the homologation information that
may be specific for a given country.
vendorId PositiveInteger 0..1 attr Vendor ID of this Implementation according to the
AUTOSAR vendor list.
vendor CryptoService 0..1 ref This reference identifies the certificate that represents the
Signature Certificate vendor’s signature.
version StrongRevisionLabel 0..1 attr This attribute can be used to describe a version
String information for the enclosing SoftwareCluster.
Class StartupConfig
Package M2::AUTOSARTemplates::AdaptivePlatform::ExecutionManifest
Note This meta-class represents a reusable startup configuration for processes..
Tags: atp.recommendedPackage=StartupConfigs
Base ARElement, ARObject, CollectableElement, Identifiable, MultilanguageReferrable, Packageable
Element, Referrable, UploadableDeploymentElement, UploadablePackageElement
Aggregated by ARPackage.element
Attribute Type Mult. Kind Note
environment TagWithOptionalValue * aggr This aggregation represents the collection of environment
Variable variables that shall be added to the respective Process’s
environment prior to launch.
executionError ProcessExecutionError 0..1 ref this reference is used to identify the applicable execution
error
permissionTo Boolean 0..1 attr This attribute defines if Process is permitted to create
CreateChild child Processes. When setting this parameter to true two
Process things should be kept in mind: 1) safety and security
implication of this configuration, 2) the fact that Process
will assume management responsibilities for child
Processes (i.e. it will be responsible for terminating
Processes that it creates).
process ProcessArgument * aggr This aggregation represents the collection of
Argument command-line arguments applicable to the enclosing
(ordered) StartupConfig.
scheduling String 0..1 attr This attribute represents the ability to define the
Policy scheduling policy for the initial thread of the application.
scheduling Integer 0..1 attr This is the scheduling priority requested by the
Priority application itself.
termination TerminationBehavior 0..1 attr This attribute defines the termination behavior of the
Behavior Enum Process.
timeout EnterExitTimeout 0..1 aggr This aggregation can be used to specify the timeouts for
launching and terminating the process depending on the
StartupConfig.
Class StateDependentStartupConfig
Package M2::AUTOSARTemplates::AdaptivePlatform::ExecutionManifest
Note This meta-class defines the startup configuration for the process depending on a collection of machine
states.
Base ARObject
Aggregated by Process.stateDependentStartupConfig
Attribute Type Mult. Kind Note
execution ExecutionDependency * aggr This attribute defines that all processes that are
Dependency referenced via the ExecutionDependency shall be
launched and shall reach a certain ProcessState before
the referencing process is started.
functionGroup ModeDeclaration * iref This represent the applicable functionGroupMode.
State
InstanceRef implemented by: FunctionGroupStateIn
FunctionGroupSetInstanceRef
resource ResourceConsumption 0..1 aggr This aggregation provides the ability to define resource
Consumption consumption boundaries on a per-process-startup-config
basis.
resourceGroup ResourceGroup 0..1 ref Reference to an applicable resource group.
startupConfig StartupConfig 0..1 ref Reference to a reusable startup configuration with startup
parameters.
Class TagWithOptionalValue
Package M2::AUTOSARTemplates::GenericStructure::GeneralTemplateClasses::TagWithOptionalValue
Note A tagged value is a combination of a tag (key) and a value that gives supplementary information that is
attached to a model element. Please note that keys without a value are allowed.
Base ARObject
Aggregated by AbstractServiceInstance.capabilityRecord, Machine.environmentVariable, ProvidedSomeipService
Instance.capabilityRecord, RequiredSomeipServiceInstance.capabilityRecord, SdClientConfig.capability
Record, SdServerConfig.capabilityRecord, StartupConfig.environmentVariable
Attribute Type Mult. Kind Note
key String 0..1 attr Defines a key.
sequenceOffset Integer 0..1 attr The sequenceOffset attribute supports the use case
where TagWithOptionalValue is aggregated as splitable. If
multiple aggregations define the same value of attribute
key then the order in which the value collection is merged
might be significant. As an example consider the
modeling of the $PATH environment variable by means of
a meta class TagWithOptionalValue. The sequenceOffset
describes the relative position of each contribution in the
concatenated value. The contributions are sorted in
increasing integer order.
value String 0..1 attr Defines the corresponding value.
Enumeration TerminationBehaviorEnum
Package M2::AUTOSARTemplates::AdaptivePlatform::ExecutionManifest
Note This enumeration provides options for controlling of how a Process terminates.
Aggregated by StartupConfig.terminationBehavior
Literal Description
5
4
Enumeration TerminationBehaviorEnum
processIsNotSelf The Process terminates only on request from Execution Management.
Terminating
Tags: atp.EnumerationLiteralIndex=0
processIsSelf The Process is allowed to terminate without request from Execution Management.
Terminating
Tags: atp.EnumerationLiteralIndex=1
Enumeration TrustedPlatformExecutableLaunchBehaviorEnum
Package M2::AUTOSARTemplates::AdaptivePlatform::MachineManifest
Note This enumeration provides options for controlling the behavior of how authentication affects the ability
to launch an Executable.
Aggregated by Machine.trustedPlatformExecutableLaunchBehavior
Literal Description
monitorMode An Executable shall always launch, even if the corresponding authentication fails
Tags: atp.EnumerationLiteralIndex=1
noTrustedPlatform This value shall be used if there is no TrustedPlatform support on the Machine
Support
Tags: atp.EnumerationLiteralIndex=2
strictMode An Executable shall not launch if the corresponding authentication fails.
Tags: atp.EnumerationLiteralIndex=0
Number Heading
[SWS_EM_00017] Application Processes
[SWS_EM_01000] Startup order
[SWS_EM_01002] Idle Process State
[SWS_EM_01003] Starting Process State
[SWS_EM_01004] Running Process State
[SWS_EM_01005] Terminating Process State
[SWS_EM_01006] Terminated Process State
[SWS_EM_01012] Application Argument Passing
[SWS_EM_01013] Machine State
[SWS_EM_01014] Scheduling policy
[SWS_EM_01015] Scheduling priority
[SWS_EM_01017] Application Binary Name
[SWS_EM_01023] Machine State Startup
[SWS_EM_01024] Machine State Shutdown
[SWS_EM_01025] Machine State Restart
[SWS_EM_01026] Machine State change
[SWS_EM_01027] Rejection of Client Requests
[SWS_EM_01028] GetMachineState API
[SWS_EM_01029] SetMachineState API
[SWS_EM_01030] Start of Application execution
[SWS_EM_01033] Application start-up configuration
[SWS_EM_01034] Deny SetMachineState API Request
[SWS_EM_01035] Machine State Restart behavior
[SWS_EM_01036] Machine State Shutdown behavior
[SWS_EM_01037] Machine State Startup behavior
[SWS_EM_01039] Scheduling priority range for SCHED_FIFO and SCHED_RR
[SWS_EM_01040] Scheduling priority range for SCHED_OTHER
5
4
Number Heading
[SWS_EM_01041] Scheduling FIFO
[SWS_EM_01042] Scheduling Round-Robin
[SWS_EM_01043] Scheduling Other
[SWS_EM_01050] Start dependent Application Executables
[SWS_EM_01051] Shutdown Application Executables
[SWS_EM_01052] Application State Initializing
[SWS_EM_01053] Application State Running
[SWS_EM_01055] Application State Termination
[SWS_EM_01056] Machine State Management Application
[SWS_EM_01057] Machine State Change arbitration
[SWS_EM_01058] Shutdown of the Operating System
[SWS_EM_01059] Restart of the Operating System
[SWS_EM_01060] Machine State change behavior
[SWS_EM_02000]
[SWS_EM_02001]
[SWS_EM_02002]
[SWS_EM_02003]
[SWS_EM_02005]
[SWS_EM_02006]
[SWS_EM_02007]
[SWS_EM_02008]
[SWS_EM_02009]
[SWS_EM_02014]
[SWS_EM_02019]
[SWS_EM_02030]
[SWS_EM_02031] Application State Reporting
[SWS_EM_99999]
[SWS_OSI_01007]
Table B.1: Added Specification Items in 17-03
none
none
none
none
none
Number Heading
[SWS_EM_01001] Execution Dependency error
[SWS_EM_01016] RestartProcess API
[SWS_EM_01018] OverrideState API
[SWS_EM_01032] Machine States
[SWS_EM_01061] OverrideState API interrupt
[SWS_EM_01062] RestartProcess behaviour
[SWS_EM_01107] Function Group name
[SWS_EM_01108] Function Group State
[SWS_EM_01109] State References
[SWS_EM_01110] Off States
[SWS_EM_01111] No reference to Off State
[SWS_EM_01112] StartupConfig
[SWS_EM_01201] Core Binding
[SWS_EM_02041] ResetCause Enumeration
[SWS_EM_02042] ApplicationClient::SetLastResetCause API
[SWS_EM_02043] ApplicationClient::GetLastResetCause API
[SWS_EM_02044] Machine State change in progress
[SWS_EM_02047] StateClient::GetState API
[SWS_EM_02048] Function Group State change in progress
[SWS_EM_02049] State change failed
5
4
Number Heading
[SWS_EM_02050] State change successful
[SWS_EM_02051] Machine State change in progress
[SWS_EM_02054] StateClient::SetState API
[SWS_EM_02055] Function Group State change in progress
[SWS_EM_02056] State change failed
[SWS_EM_02057] State change successful
[SWS_EM_02070] ApplicationReturnType Enumeration
[SWS_EM_02071]
[SWS_EM_02072] Retrieving Machine State
[SWS_EM_02073] Retrieving Function Group State
[SWS_EM_02074] Setting Machine State
[SWS_EM_02075] Setting Function Group State
[SWS_EM_NA]
Table B.2: Added Specification Items in 17-10
Number Heading
[SWS_EM_01000] Startup order
[SWS_EM_01002] Idle Process State
[SWS_EM_01003] Starting Process State
[SWS_EM_01004] Running Process State
[SWS_EM_01005] Terminating Process State
[SWS_EM_01006] Terminated Process State
[SWS_EM_01012] Application Argument Passing
[SWS_EM_01013] Machine State and Function Group State
[SWS_EM_01014] Scheduling policy
[SWS_EM_01015] Scheduling priority
[SWS_EM_01017] Application Binary Name
[SWS_EM_01023] Machine State Startup
[SWS_EM_01024] Machine State Shutdown
[SWS_EM_01025] Machine State Restart
[SWS_EM_01026] State change
[SWS_EM_01028] GetState API
[SWS_EM_01030] Start of Application execution
[SWS_EM_01033] Application start-up configuration
5
4
Number Heading
[SWS_EM_01034] Deny State change request
[SWS_EM_01035] Machine State Restart behavior
[SWS_EM_01036] Machine State Shutdown behavior
[SWS_EM_01037] Machine State Startup behavior
[SWS_EM_01039] Scheduling priority range for SCHED_FIFO and SCHED_RR
[SWS_EM_01040] Scheduling priority range for SCHED_OTHER
[SWS_EM_01041] Scheduling FIFO
[SWS_EM_01042] Scheduling Round-Robin
[SWS_EM_01043] Scheduling Other
[SWS_EM_01050] Start dependent Application Executables
[SWS_EM_01051] Shutdown Application Executables
[SWS_EM_01053] Application State Running
[SWS_EM_01055] Application State Termination
[SWS_EM_01056] State Manager
[SWS_EM_01058] Shutdown of the Operating System
[SWS_EM_01059] Restart of the Operating System
[SWS_EM_01060] State change behavior
[SWS_EM_02000] ApplicationState Enumeration
[SWS_EM_02001]
[SWS_EM_02002] ApplicationClient::~ApplicationClient API
[SWS_EM_02003] ApplicationClient::ReportApplicationState API
[SWS_EM_02005] StateReturnType Enumeration
[SWS_EM_02006]
[SWS_EM_02007] StateClient::StateClient API
[SWS_EM_02008] StateClient::~StateClient API
[SWS_EM_02030] ApplicationClient::ApplicationClient API
[SWS_EM_02031] Application State Reporting
Table B.3: Changed Specification Items in 17-10
Number Heading
[SWS_EM_00017] Application Processes
[SWS_EM_01027] Rejection of Client Requests
[SWS_EM_01029] SetMachineState API
5
4
Number Heading
[SWS_EM_01052] Application State Initializing
[SWS_EM_01057] Machine State Change arbitration
[SWS_EM_02009]
[SWS_EM_02014]
[SWS_EM_02019]
[SWS_EM_99999]
Table B.4: Deleted Specification Items in 17-10
none
none
none
Number Heading
[SWS_EM_01044] Machine States Identification
[SWS_EM_01063] Process Restart Failed
[SWS_EM_01064] Process Restart Successful
[SWS_EM_01065] Shutdown state timeout monitoring behavior
[SWS_EM_01066] Start state change behavior
[SWS_EM_01067] Confirm State Changes
[SWS_EM_01068] Report start-up timeout
5
4
Number Heading
[SWS_EM_01069] Self-terminating Process State
[SWS_EM_01070] Acknowledgement of termination request
[SWS_EM_01071] Initiation of Process self-termination
[SWS_EM_01072] Application Argument Zero
[SWS_EM_01073] Simple Arguments
[SWS_EM_01074] Short form arguments with option value
[SWS_EM_01075] Short form Arguments without option value
[SWS_EM_01076] Long form Arguments with option value
[SWS_EM_01077] Long form Arguments without option value
[SWS_EM_01301] Cyclic Execution
[SWS_EM_01302] Cyclic Execution Control
[SWS_EM_01305] Worker Pool
[SWS_EM_01308] Random Numbers
[SWS_EM_01310] Get Activation Time
[SWS_EM_01311] Activation Time Unknown
[SWS_EM_01312] Get Next Activation Time
[SWS_EM_01313] Next Activation Time Unknown
[SWS_EM_02058] State Transition Timeout
[SWS_EM_02102] Memory control
[SWS_EM_02103] CPU usage control
[SWS_EM_02104] Core affinity
[SWS_EM_02106] ResourceGroup assignment
[SWS_EM_02107] Maximum heap
[SWS_EM_02108] Maximum system memory usage
[SWS_EM_02109] Process pre-mapping
[SWS_EM_02201] ActivationReturnType Enumeration
[SWS_EM_02202] ActivationTimeStampReturnType Enumeration
[SWS_EM_02210]
[SWS_EM_02211] DeterministicClient::DeterministicClient API
[SWS_EM_02215] DeterministicClient::~DeterministicClient API
[SWS_EM_02216] DeterministicClient::WaitForNextActivation API
[SWS_EM_02220] DeterministicClient::RunWorkerPool API
[SWS_EM_02225] DeterministicClient::GetRandom API
[SWS_EM_02230] DeterministicClient::GetActivationTime API
[SWS_EM_02235] DeterministicClient::GetNextActivationTime API
Table B.5: Added Specification Items in 18-03
Number Heading
[SWS_EM_01000] Startup order
[SWS_EM_01001] Execution Dependency error
[SWS_EM_01002] Idle Process State
[SWS_EM_01003] Starting Process State
[SWS_EM_01004] Running Process State
[SWS_EM_01005] Terminating Process State
[SWS_EM_01006] Terminated Process State
[SWS_EM_01012] Application Argument Passing
[SWS_EM_01013] Machine State and Function Group State
[SWS_EM_01014] Scheduling policy
[SWS_EM_01015] Scheduling priority
[SWS_EM_01016] Restart Process
[SWS_EM_01018] Override State
[SWS_EM_01023] Machine State Startup
[SWS_EM_01024] Machine State Shutdown
[SWS_EM_01025] Machine State Restart
[SWS_EM_01026] State Change
[SWS_EM_01028] Get State Information
[SWS_EM_01030] Start of Process execution
[SWS_EM_01032] Machine States Obtainment
[SWS_EM_01033] Application start-up configuration
[SWS_EM_01034] Deny State Change Request
[SWS_EM_01035] Machine State Restart behavior
[SWS_EM_01036] Machine State Shutdown behavior
[SWS_EM_01037] Machine State Startup behavior
[SWS_EM_01041] Scheduling FIFO
[SWS_EM_01042] Scheduling Round-Robin
[SWS_EM_01043] Scheduling Other
[SWS_EM_01050] Start Dependent Processes
[SWS_EM_01051] Shutdown Processes
[SWS_EM_01053] Application State Running
[SWS_EM_01055] Initiation of Process termination
[SWS_EM_01058] Shutdown of the Operating System
[SWS_EM_01059] Restart of the Operating System
[SWS_EM_01060] Shutdown state change behavior
[SWS_EM_01061] Override State Interrupt
5
4
Number Heading
[SWS_EM_01062] Restart Process Behavior
[SWS_EM_01107] Function Group name
[SWS_EM_01108] Function Group State
[SWS_EM_01109] State References
[SWS_EM_01110] Off States
[SWS_EM_02001]
[SWS_EM_02044] State Change in Progress
[SWS_EM_02049] State Change Failed
[SWS_EM_02050] State Information Success
[SWS_EM_02056] State Change Failed
[SWS_EM_02057] State Change Successful
[SWS_EM_NA]
Table B.6: Changed Specification Items in 18-03
Number Heading
[SWS_EM_01017] Application Binary Name
[SWS_EM_01056] State Manager
[SWS_EM_01112] StartupConfig
[SWS_EM_01201] Core Binding
[SWS_EM_02005] StateReturnType Enumeration
[SWS_EM_02006]
[SWS_EM_02007] StateClient::StateClient API
[SWS_EM_02008] StateClient::~StateClient API
[SWS_EM_02031] Application State Reporting
[SWS_EM_02041] ResetCause Enumeration
[SWS_EM_02042] ApplicationClient::SetLastResetCause API
[SWS_EM_02043] ApplicationClient::GetLastResetCause API
[SWS_EM_02047] StateClient::GetState API
[SWS_EM_02048] Function Group State change in progress
[SWS_EM_02051] Machine State change in progress
[SWS_EM_02054] StateClient::SetState API
[SWS_EM_02055] Function Group State change in progress
[SWS_EM_02071]
[SWS_EM_02072] Retrieving Machine State
5
4
Number Heading
[SWS_EM_02073] Retrieving Function Group State
[SWS_EM_02074] Setting Machine State
[SWS_EM_02075] Setting Function Group State
Table B.7: Deleted Specification Items in 18-03
none
none
none
none
Number Heading
[SWS_EM_01000] Startup order
[SWS_EM_01001] Execution Dependency error
[SWS_EM_01004] Running Process State
[SWS_EM_01005] Terminating Process State
[SWS_EM_01012] Process Argument Passing
[SWS_EM_01013] Machine State and Function Group State
5
4
Number Heading
[SWS_EM_01014] Scheduling policy
[SWS_EM_01015] Scheduling priority
[SWS_EM_01018] Override State
[SWS_EM_01023] Machine State Startup
[SWS_EM_01024] Machine State Shutdown
[SWS_EM_01025] Machine State Restart
[SWS_EM_01026] State Change
[SWS_EM_01028] Get State Information
[SWS_EM_01033] Process start-up configuration
[SWS_EM_01034] Deny State Change Request
[SWS_EM_01035] Machine State Restart behavior
[SWS_EM_01036] Machine State Shutdown behavior
[SWS_EM_01037] Machine State Startup behavior
[SWS_EM_01039] Scheduling priority range for SCHED_FIFO and SCHED_RR
[SWS_EM_01040] Scheduling priority range for SCHED_OTHER
[SWS_EM_01041] Scheduling FIFO
[SWS_EM_01042] Scheduling Round-Robin
[SWS_EM_01043] Scheduling Other
[SWS_EM_01053] Execution State Running
[SWS_EM_01060] Shutdown state change behavior
[SWS_EM_01065] Shutdown state timeout monitoring behavior
[SWS_EM_01066] Start state change behavior
[SWS_EM_01067] Confirm State Changes
[SWS_EM_01069] Self-terminating Process State
[SWS_EM_01070] Acknowledgement of termination request
[SWS_EM_01071] Initiation of Process self-termination
[SWS_EM_01072] Process Argument Zero
[SWS_EM_01074] Short form arguments with option value
[SWS_EM_01075] Short form Arguments without option value
[SWS_EM_01076] Long form Arguments with option value
[SWS_EM_01077] Long form Arguments without option value
[SWS_EM_01107] Function Group configuration
[SWS_EM_01109] Misconfigured Process instances
[SWS_EM_01110] Off States
[SWS_EM_02000] ExecutionState Enumeration
[SWS_EM_02001]
[SWS_EM_02002] ExecutionClient::~ExecutionClient API
[SWS_EM_02003] ExecutionClient::ReportExecutionState API
5
4
Number Heading
[SWS_EM_02030] ExecutionClient::ExecutionClient API
[SWS_EM_02044] State Change in Progress
[SWS_EM_02049] State Change Failed
[SWS_EM_02070] ExecutionReturnType Enumeration
[SWS_EM_02109] Process pre-mapping
[SWS_EM_02210]
[SWS_EM_NA]
Table B.8: Changed Specification Items in 18-10
Number Heading
[SWS_EM_01044] Machine States Identification
[SWS_EM_01108] Function Group State
[SWS_EM_01111] No reference to Off State
Table B.9: Deleted Specification Items in 18-10
none
none
none
Number Heading
[SWS_EM_02250] Machine State Startup
[SWS_EM_02251] State transition - restart behavior
[SWS_EM_02252] State transition - Process termination timeout reporting
[SWS_EM_02253] State transition - Process start-up timeout monitoring
[SWS_EM_02254] Misconfigured Process - assigned to more than one Function Group
[SWS_EM_02255] State transition - Process termination timeout reaction
[SWS_EM_02256] State transition - Process start-up timeout reaction
Table B.10: Added Specification Items in R19-03
Number Heading
[SWS_EM_01001] Execution Dependency error
[SWS_EM_01005] Terminating Process State
[SWS_EM_01012] Process Argument Passing
[SWS_EM_01013] Function Group State
[SWS_EM_01014] Scheduling policy
[SWS_EM_01015] Scheduling priority
[SWS_EM_01023] Self initiation of Machine State Startup transition
[SWS_EM_01024] Machine State Shutdown
[SWS_EM_01025] Machine State Restart
[SWS_EM_01060] State transition - termination behavior
[SWS_EM_01065] State transition - Process termination timeout monitoring
[SWS_EM_01066] State transition - start behavior
[SWS_EM_01067] Finish of a successful state transition
[SWS_EM_01068] State transition - Process start-up timeout reporting
[SWS_EM_01109] Misconfigured Process - not assigned to a Function Group
[SWS_EM_01110] Off States
[SWS_EM_01400] Execution Dependency resolution
[SWS_EM_02000]
[SWS_EM_02001]
[SWS_EM_02201]
5
4
Number Heading
[SWS_EM_02202]
[SWS_EM_02210]
[SWS_EM_02241] Machine State Startup Completion
[SWS_EM_02245] Dependency resolution during state change
[SWS_EM_02246] Process specific Environment Variables
Table B.11: Changed Specification Items in R19-03
Number Heading
[SWS_EM_01035] Machine State Restart behavior
[SWS_EM_01036] Machine State Shutdown behavior
[SWS_EM_02002] ExecutionClient::~ExecutionClient API
[SWS_EM_02003] ExecutionClient::ReportExecutionState API
[SWS_EM_02030] ExecutionClient::ExecutionClient API
[SWS_EM_02070] ExecutionReturnType Enumeration
[SWS_EM_02211] DeterministicClient::DeterministicClient API
[SWS_EM_02215] DeterministicClient::~DeterministicClient API
[SWS_EM_02216] DeterministicClient::WaitForNextActivation API
[SWS_EM_02220] DeterministicClient::RunWorkerPool API
[SWS_EM_02225] DeterministicClient::GetRandom API
[SWS_EM_02230] DeterministicClient::GetActivationTime API
[SWS_EM_02235] DeterministicClient::GetNextActivationTime API
Table B.12: Deleted Specification Items in R19-03
none
none
none
Number Heading
[SWS_EM_01401] Process Self Reporting
[SWS_EM_01402] Implicit Running Process State
[SWS_EM_01403] Reporting Non-reporting Process
[SWS_EM_01404] Terminating Process State after Termination Request
[SWS_EM_01405] Terminating Process State after Terminating Report
[SWS_EM_02002]
[SWS_EM_02003]
[SWS_EM_02030]
[SWS_EM_02211]
[SWS_EM_02215]
[SWS_EM_02216]
[SWS_EM_02220]
[SWS_EM_02225]
[SWS_EM_02230]
[SWS_EM_02235]
[SWS_EM_02257] Recovery Action API Security
[SWS_EM_02258] State transition - Process termination timeout reporting
[SWS_EM_02259] State transition - Process start-up timeout reporting
[SWS_EM_02260] State transition - Process start-up timeout reaction
[SWS_EM_02261] Enter Unrecoverable State
[SWS_EM_02262] Enter Unrecoverable State Behavior
[SWS_EM_02263]
[SWS_EM_02264]
[SWS_EM_02265]
[SWS_EM_02266]
[SWS_EM_02267]
[SWS_EM_02268]
[SWS_EM_02269]
[SWS_EM_02270]
5
4
Number Heading
[SWS_EM_02271]
[SWS_EM_02272]
[SWS_EM_02273]
[SWS_EM_02274]
[SWS_EM_02275]
[SWS_EM_02276]
[SWS_EM_02277]
[SWS_EM_02278]
[SWS_EM_02279]
[SWS_EM_02281]
[SWS_EM_02282]
[SWS_EM_02283]
[SWS_EM_02284]
[SWS_EM_02286]
[SWS_EM_02287]
[SWS_EM_02288]
[SWS_EM_02289]
[SWS_EM_02290]
[SWS_EM_02291]
[SWS_EM_02292]
[SWS_EM_02297] StateClient usage restriction
[SWS_EM_02298] Canceling ongoing state transition
[SWS_EM_02299] Availability of a Trust Anchor
[SWS_EM_02300] Integrity and Authenticity of processed Machine Manifest
[SWS_EM_02301] Integrity and Authenticity of each Executable
[SWS_EM_02302] Integrity and Authenticity of shared objects
[SWS_EM_02303] Integrity and Authenticity of processed Execution Manifests
[SWS_EM_02304] Integrity and Authenticity of processed Service Instance Manifests
[SWS_EM_02305] Failed authenticity checks
[SWS_EM_02306] Machine Manifest
[SWS_EM_02307] Strict Mode - Execution manifest
[SWS_EM_02308] Strict Mode - Service Instance manifests
[SWS_EM_02309] Strict Mode - Executables
Table B.13: Added Specification Items in R19-11
Number Heading
[SWS_EM_01000] Startup order
[SWS_EM_01001] Execution Dependency error
[SWS_EM_01002] Idle Process State
[SWS_EM_01003] Starting Process State
[SWS_EM_01004] Running Process State of Reporting Processes
[SWS_EM_01006] Terminated Process State
[SWS_EM_01012] Process Argument Passing
[SWS_EM_01013] Function Group State
[SWS_EM_01014] Scheduling policy
[SWS_EM_01015] Scheduling priority
[SWS_EM_01016] Process Restart
[SWS_EM_01023] Self initiation of Machine State Startup transition
[SWS_EM_01024] Machine State Shutdown
[SWS_EM_01025] Machine State Restart
[SWS_EM_01030] Restriction of process creation right for Processes
[SWS_EM_01032] Machine States configuration
[SWS_EM_01033] Process start-up configuration
[SWS_EM_01041] Scheduling FIFO
[SWS_EM_01042] Scheduling Round-Robin
[SWS_EM_01043] Scheduling Other
[SWS_EM_01050] Start Dependent Processes
[SWS_EM_01051] Termination of Processes
[SWS_EM_01055] Initiation of Process termination
[SWS_EM_01060] State transition - termination behavior
[SWS_EM_01062] Process Restart Behavior
[SWS_EM_01063] Process Restart Failed
[SWS_EM_01064] Process Restart Successful
[SWS_EM_01065] State transition - Process termination timeout monitoring
[SWS_EM_01066] State transition - start behavior
[SWS_EM_01067] Finish of a successful state transition
[SWS_EM_01071] Premature Termination of a Reporting Process
[SWS_EM_01072] Process Argument Zero
[SWS_EM_01073] Simple Arguments
[SWS_EM_01074] Short form arguments with option value
[SWS_EM_01075] Short form Arguments without option value
[SWS_EM_01076] Long form Arguments with option value
5
4
Number Heading
[SWS_EM_01077] Long form Arguments without option value
[SWS_EM_01107] Function Group configuration
[SWS_EM_01109] Misconfigured Process - not assigned to a Function Group
[SWS_EM_01110] Off States
[SWS_EM_01301] Cyclic Execution
[SWS_EM_01302] Cyclic Execution Control
[SWS_EM_01303] Cyclic Execution Control Sequence
[SWS_EM_01304] Service Modification
[SWS_EM_01305] Worker Pool
[SWS_EM_01306] Processing Container Objects
[SWS_EM_01308] Random Numbers
[SWS_EM_01310] Get Activation Time
[SWS_EM_01311] Activation Time Unknown
[SWS_EM_01312] Get Next Activation Time
[SWS_EM_01313] Next Activation Time Unknown
[SWS_EM_01351] Execution Cycle Time
[SWS_EM_01352] Execution Cycle Timeout
[SWS_EM_01353] Event-triggered Cycle Activation
[SWS_EM_02076] Get Process States Information
[SWS_EM_02077] Process State Transition Event
[SWS_EM_02102] Memory control
[SWS_EM_02103] CPU usage control
[SWS_EM_02104] Core affinity
[SWS_EM_02106] ResourceGroup assignment
[SWS_EM_02107] Maximum heap
[SWS_EM_02108] Maximum system memory usage
[SWS_EM_02109] Process pre-mapping
[SWS_EM_02241] Machine State Startup Completion
[SWS_EM_02242] Further Function Group State Changes
[SWS_EM_02243] Handling Execution State Running
[SWS_EM_02244] Handling Execution State Terminating
[SWS_EM_02245] Dependency resolution during state change
[SWS_EM_02246] Process specific Environment Variables
[SWS_EM_02247] Machine specific Environment Variables
[SWS_EM_02248] Environment Variables precedence
[SWS_EM_02249] Missing value from Environment Variable definition
[SWS_EM_02250] Machine State Startup
[SWS_EM_02251] State transition - restart behavior
[SWS_EM_02253] State transition - Process start-up timeout monitoring
5
4
Number Heading
[SWS_EM_02254] Misconfigured Process - assigned to more than one Function Group
[SWS_EM_02255] State transition - Process termination timeout reaction
Table B.14: Changed Specification Items in R19-11
Number Heading
[SWS_EM_01005] Terminating Process State
[SWS_EM_01018] Enter Safe State
[SWS_EM_01026] State Change
[SWS_EM_01028] Get State Information
[SWS_EM_01034] Deny State Change Request
[SWS_EM_01053] Execution State Running
[SWS_EM_01061] Enter Safe State Behavior
[SWS_EM_01068] State transition - Process start-up timeout reporting
[SWS_EM_01070] Acknowledgement of termination request
[SWS_EM_01400] Execution Dependency resolution
[SWS_EM_02044] State Change in Progress
[SWS_EM_02049] State Change Failed
[SWS_EM_02050] State Information Success
[SWS_EM_02056] State Change Failed
[SWS_EM_02057] State Change Successful
[SWS_EM_02058] State Transition Timeout
[SWS_EM_02252] State transition - Process termination timeout reporting
[SWS_EM_02256] State transition - Process start-up timeout reaction
Table B.15: Deleted Specification Items in R19-11
none
none
none
Number Heading
[SWS_EM_01314] Default value for terminationBehavior
[SWS_EM_01309] Unexpected Termination of a process
[SWS_EM_01078] Process Argument strings
[SWS_EM_02311] Order of process termination timeout reaction
[SWS_EM_02310] State transition - process termination after start-up timeout reaction
[SWS_EM_02312] Order of process start-up timeout reaction
[SWS_EM_02280] Effect on Execution Dependency
Unexpected Termination of starting processes during Function Group State
[SWS_EM_02313]
transition
Unexpected Termination of terminating processes during Function Group
[SWS_EM_02314]
State transition
[SWS_EM_01320] Number of DeterministicClients
[SWS_EM_01321] Minimum number of required synchronization requests
[SWS_EM_01322] Calculation of the next cycle
[SWS_EM_01323] Total kRun loop count
[SWS_EM_01324] Infinite kRun loop
[SWS_EM_01325] Synchronization Request Message
[SWS_EM_01326] Synchronization Response Message
[SWS_EM_01327] Return of the wait point API
[SWS_EM_02032] On entry to the Unrecoverable State
[SWS_EM_02033] After execution of the pre-cleanup action
[SWS_EM_02034] After all processes managed by Execution Management terminated,
[SWS_EM_02400] Properties of IAM-configuration assigned to processes
[SWS_EM_02203] DeterministicClient::TimeStamp
[SWS_EM_02541] ExecutionError
[SWS_EM_02544] ExecutionErrorEvent
[SWS_EM_02545] ExecutionErrorEvent::executionError
[SWS_EM_02546] ExecutionErrorEvent::functionGroup
[SWS_EM_02510] WorkerRunnable class
[SWS_EM_02520] WorkerRunnable::Run
5
4
Number Heading
[SWS_EM_02530] WorkerThread class
[SWS_EM_02531] WorkerThread::WorkerThread
[SWS_EM_02532] WorkerThread:: WorkerThread
[SWS_EM_02540] WorkerThread::GetRandom
[SWS_EM_02217] DeterministicClient::WaitForActivation
[SWS_EM_02221] DeterministicClient::RunWorkerPool
[SWS_EM_02226] DeterministicClient::SetRandomSeed
[SWS_EM_02231] DeterministicClient::GetActivationTime
[SWS_EM_02236] DeterministicClient::GetNextActivationTime
[SWS_EM_02542] StateClient::GetExecutionError
[SWS_EM_02543] Default value for ExecutionError
[SWS_EM_02290] GetExecErrorDomain
[SWS_EM_02291] MakeErrorCode
Table B.16: Added Specification Items in R20-11
Number Heading
[SWS_EM_02243] Handling Execution State Running
[SWS_EM_01405] Terminating Process State after Terminating Report
[SWS_EM_01073] Simple Arguments
[SWS_EM_01074] Short form arguments with option value
[SWS_EM_01075] Short form Arguments without option value
[SWS_EM_01076] Long form Arguments with option value
[SWS_EM_01077] Long form Arguments without option value
[SWS_EM_01032] Machine States configuration
[SWS_EM_02250] Machine State Startup
[SWS_EM_02258] State transition - Process termination timeout reporting
[SWS_EM_02260] State transition - Process start-up timeout reaction
[SWS_EM_02259] State transition - Process start-up timeout reporting
[SWS_EM_01067] Confirm State Changes
[SWS_EM_02297] StateClient usage restriction
[SWS_EM_02000] ExecutionState
[SWS_EM_02202] ActivationTimeStampReturnType
[SWS_EM_02216] DeterministicClient::WaitForNextActivation
[SWS_EM_02220] DeterministicClient::RunWorkerPool
5
4
Number Heading
[SWS_EM_02230] DeterministicClient::GetActivationTime
[SWS_EM_02235] DeterministicClient::GetNextActivationTime
[SWS_EM_02263] FunctionGroup class
[SWS_EM_02264] FunctionGroup::Preconstruct
[SWS_EM_02265] FunctionGroup::FunctionGroup
[SWS_EM_02266] FunctionGroup:: FunctionGroup
[SWS_EM_02267] FunctionGroup::operator==
[SWS_EM_02268] FunctionGroup::operator!=
[SWS_EM_02269] FunctionGroupState class
[SWS_EM_02270] FunctionGroupState::Preconstruct
[SWS_EM_02271] FunctionGroupState::FunctionGroupState
[SWS_EM_02272] FunctionGroupState:: FunctionGroupState
[SWS_EM_02273] FunctionGroupState::operator==
[SWS_EM_02274] FunctionGroupState::operator!=
Table B.17: Changed Specification Items in R20-11
Number Heading
[SWS_EM_01071] Premature Termination of a Reporting Process
[SWS_EM_02244] Handling Execution State Terminating
[SWS_EM_01024] Machine State Shutdown
[SWS_EM_02242] Further Function Group State Changes
[SWS_EM_02257] Recovery Action API Security
[SWS_EM_02076] Get Process States Information
[SWS_EM_02077] Process State Transition Event
[SWS_EM_01016] Process Restart
[SWS_EM_01062] Process Restart Behavior
[SWS_EM_01063] Process Restart Failed
[SWS_EM_01064] Process Restart Successful
[SWS_EM_02261] Enter Unrecoverable State
[SWS_EM_02262] Enter Unrecoverable State Behavior
Table B.18: Deleted Specification Items in R20-11
none
none
none
Number Heading
[SWS_EM_02547] Obtain error information
[SWS_EM_02548] Create error information
[SWS_EM_CON-
Definition of process state in the context of the ExecutionDependency
STR_1744]
[SWS_EM_CON-
Modeling execution dependency for the Terminated state
STR_0001]
[SWS_EM_02549] MachineFG.Off handling
[SWS_EM_02551] Missing DeterministicClient
[SWS_EM_02550] Execution Cycle Termination
[SWS_EM_01328] Immediate return from wait point
[SWS_EM_02323] FunctionGroup::Create
[SWS_EM_02321] FunctionGroup::FunctionGroup
[SWS_EM_02322] FunctionGroup::FunctionGroup (Copy Constructor)
[SWS_EM_02328] FunctionGroup::FunctionGroup (Move Constructor)
[SWS_EM_02327] FunctionGroup::operator= (Copy assignment operator)
[SWS_EM_02329] FunctionGroup::operator= (Move assignment operator)
[SWS_EM_02326] FunctionGroupState::Create
[SWS_EM_02324] FunctionGroupState::FunctionGroupState
[SWS_EM_02325] FunctionGroupState::FunctionGroupState (Copy Constructor)
[SWS_EM_02331] FunctionGroupState::FunctionGroupState (Move Constructor)
5
4
Number Heading
[SWS_EM_02330] FunctionGroupState::operator= (Copy assignment operator)
[SWS_EM_02332] FunctionGroupState::operator= (Move assignment operator)
Table B.19: Added Specification Items in R21-11
Number Heading
[SWS_EM_01309] Unexpected Termination of a process
[SWS_EM_02243] Handling Execution State Running
[SWS_EM_01032] Machine States configuration
[SWS_EM_02241] Machine State Startup Completion
[SWS_EM_02254] Misconfigured process - assigned to more than one Function Group
[SWS_EM_01060] State transition - termination behavior
[SWS_EM_02255] State transition - process termination timeout reaction
[SWS_EM_02258] State transition - process termination timeout reporting
Unexpected Termination of starting processes during Function Group State
[SWS_EM_02313]
transition
Unexpected Termination of terminating processes during Function Group
[SWS_EM_02314]
State transition
[SWS_EM_01351] Execution Cycle Time
[SWS_EM_01352] Execution Cycle Timeout
[SWS_EM_01353] Event-triggered Cycle Activation
[SWS_EM_01308] Random Numbers
[SWS_EM_01313] Next Activation Time Unknown
[SWS_EM_02102] Memory control
[SWS_EM_02103] CPU usage control
[SWS_EM_02104] Core affinity
[SWS_EM_01014] Scheduling policy
[SWS_EM_02107] Maximum heap
[SWS_EM_02108] Maximum system memory usage
[SWS_EM_02109] process pre-mapping
[SWS_EM_02300] Integrity and Authenticity of Machine configuration
[SWS_EM_02303] Integrity and Authenticity of processed Execution Manifest configurations
[SWS_EM_02304] Integrity and Authenticity of processed Service Instance Manifests
[SWS_EM_02305] Failed authenticity checks
[SWS_EM_02306] Launch Behavior Validation
[SWS_EM_02309] Strict Mode - Executables
5
4
Number Heading
[SWS_EM_02276] StateClient::StateClient
[SWS_EM_02281] Execution Management error codes
Table B.20: Changed Specification Items in R21-11
Number Heading
[SWS_EM_01405] Terminating Process State after Terminating Report
[SWS_EM_01073] Simple Arguments
[SWS_EM_01074] Short form arguments with option value
[SWS_EM_01075] Short form Arguments without option value
[SWS_EM_01076] Long form Arguments with option value
[SWS_EM_01077] Long form Arguments without option value
[SWS_EM_01109] Misconfigured Process - not assigned to a Function Group
[SWS_EM_01307] Worker Object
[SWS_EM_02202] ActivationTimeStampReturnType
[SWS_EM_02216] DeterministicClient::WaitForNextActivation
[SWS_EM_02220] DeterministicClient::RunWorkerPool
[SWS_EM_02230] DeterministicClient::GetActivationTime
[SWS_EM_02235] DeterministicClient::GetNextActivationTime
[SWS_EM_02264] FunctionGroup::Preconstruct
[SWS_EM_02265] FunctionGroup::FunctionGroup
[SWS_EM_02270] FunctionGroupState::Preconstruct
[SWS_EM_02271] FunctionGroupState::FunctionGroupState
Table B.21: Deleted Specification Items in R21-11
none
none
none
Number Heading
[SWS_EM_01210] Report “kRunning received event” to Platform Health Management
[SWS_EM_01211] Report “initiating process termination” event to Platform Health Management
[SWS_EM_01212] Report “process terminated” event to Platform Health Management
[SWS_EM_02552] State transition - integrity or authenticity check failed
[SWS_EM_02553] Rejecting a state transition to a state that the FG is already in
[SWS_EM_02554] Rejecting a state transition to a state that the FG is already transition to
[SWS_EM_02555] Failure in Machine State Startup transition
[SWS_EM_-
Modeling execution dependency for the Terminated state
CONSTR_00001]
[SWS_EM_-
Definition of process state in the context of the ExecutionDependency
CONSTR_01744]
Table B.22: Added Specification Items in R22-11
Number Heading
[SWS_EM_01013] Function Group State
[SWS_EM_01067] Actions on Completion State Transition
[SWS_EM_01078] Process Argument strings
[SWS_EM_01107] Function Group configuration
[SWS_EM_01110] Off States
[SWS_EM_01314] Default value for terminationBehavior
[SWS_EM_01320] Number of DeterministicClients
[SWS_EM_01321] Minimum number of required synchronization requests
[SWS_EM_01322] Calculation of the next cycle
[SWS_EM_01323] Total kRun loop count
[SWS_EM_01324] Infinite kRun loop
5
4
Number Heading
[SWS_EM_01403] Reporting Non-reporting Process
[SWS_EM_02000]
[SWS_EM_02001]
[SWS_EM_02002]
[SWS_EM_02003]
[SWS_EM_02030]
[SWS_EM_02108] Maximum memory usage
[SWS_EM_02201]
[SWS_EM_02203]
[SWS_EM_02210]
[SWS_EM_02211]
[SWS_EM_02215]
[SWS_EM_02217]
[SWS_EM_02221]
[SWS_EM_02225]
[SWS_EM_02226]
[SWS_EM_02231]
[SWS_EM_02236]
[SWS_EM_02241] Machine State Startup Completion
[SWS_EM_02254] Misconfigured process - assigned to more than one Function Group
[SWS_EM_02263]
[SWS_EM_02266]
[SWS_EM_02267]
[SWS_EM_02268]
[SWS_EM_02269]
[SWS_EM_02272]
[SWS_EM_02273]
[SWS_EM_02274]
[SWS_EM_02275]
[SWS_EM_02276]
[SWS_EM_02277]
[SWS_EM_02278]
[SWS_EM_02279]
[SWS_EM_02280] Effect on Execution Dependency
[SWS_EM_02281]
[SWS_EM_02282]
[SWS_EM_02283]
[SWS_EM_02284]
[SWS_EM_02286]
5
4
Number Heading
[SWS_EM_02287]
[SWS_EM_02288]
[SWS_EM_02289]
[SWS_EM_02290]
[SWS_EM_02291]
[SWS_EM_02292]
[SWS_EM_02297] StateClient usage restriction
[SWS_EM_02298] Canceling ongoing state transition
[SWS_EM_02299] Availability of a Trust Anchor
[SWS_EM_02306] Launch Behavior Validation
[SWS_EM_02321]
[SWS_EM_02322]
[SWS_EM_02323]
[SWS_EM_02324]
[SWS_EM_02325]
[SWS_EM_02326]
[SWS_EM_02327]
[SWS_EM_02328]
[SWS_EM_02329]
[SWS_EM_02330]
[SWS_EM_02331]
[SWS_EM_02332]
[SWS_EM_02400] Properties of IAM-configuration assigned to processes
[SWS_EM_02510]
[SWS_EM_02520]
[SWS_EM_02530]
[SWS_EM_02531]
[SWS_EM_02532]
[SWS_EM_02540]
[SWS_EM_02541]
[SWS_EM_02542]
[SWS_EM_02544]
[SWS_EM_02545]
[SWS_EM_02546]
Table B.23: Changed Specification Items in R22-11
Number Heading
[SWS_EM_01308] Random Numbers
[SWS_EM_02107] Maximum heap
[SWS_EM_02304] Integrity and Authenticity of processed Service Instance Manifests
[SWS_EM_-
Modeling execution dependency for the Terminated state
CONSTR_0001]
[SWS_EM_-
Definition of process state in the context of the ExecutionDependency
CONSTR_1744]
Table B.24: Deleted Specification Items in R22-11
none
none
none
Number Heading
Request of a state transition to a state that the Function Group is already
[SWS_EM_02295]
in
Request of a state transition to a state that the Function Group is already
[SWS_EM_02296]
in transition to
Unexpected Termination of processes configured for the
[SWS_EM_02315]
RequestedState during a Function Group State transition
5
4
Number Heading
Unexpected Termination of a process not configured for the
[SWS_EM_02316]
RequestedState during a Function Group State transition
[SWS_EM_02511] Definition of API function ara::exec::WorkerRunnable::WorkerRunnable
[SWS_EM_02512] Definition of API function ara::exec::WorkerRunnable::~WorkerRunnable
[SWS_EM_02513] Definition of API function ara::exec::WorkerRunnable::WorkerRunnable
[SWS_EM_02514] Definition of API function ara::exec::WorkerRunnable::WorkerRunnable
[SWS_EM_02515] Definition of API function ara::exec::WorkerRunnable::operator=
[SWS_EM_02533] Definition of API function ara::exec::WorkerThread::WorkerThread
[SWS_EM_02534] Definition of API function ara::exec::WorkerThread::WorkerThread
[SWS_EM_02535] Definition of API function ara::exec::WorkerThread::operator=
[SWS_EM_02556] Monitor Mode
[SWS_EM_02557]
[SWS_EM_02558] Default value for permissionToCreateChildProcess attribute
[SWS_EM_02559] Restriction of process creation right for processes
[SWS_EM_02560] Definition of API function ara::exec::ExecutionClient::ExecutionClient
[SWS_EM_02561] Definition of API function ara::exec::StateClient::StateClient
[SWS_EM_02562] Definition of API function ara::exec::ExecutionClient::Create
[SWS_EM_02563] Definition of API function ara::exec::ExecutionClient::ExecutionClient
[SWS_EM_02564] Definition of API function ara::exec::ExecutionClient::operator=
[SWS_EM_02565] Definition of API function ara::exec::StateClient::StateClient
[SWS_EM_02566] Definition of API function ara::exec::StateClient::StateClient
[SWS_EM_02567] Definition of API function ara::exec::StateClient::operator=
[SWS_EM_02568] Definition of API function ara::exec::StateClient::operator=
[SWS_EM_02569] LogMessage ProcessCreated
[SWS_EM_02570] LogMessage ProcessKRunningReceived
[SWS_EM_02571] LogMessage ProcessTerminationRequest
[SWS_EM_02572] LogMessage ProcessTerminated
[SWS_EM_02573] State Transition logging – process created
[SWS_EM_02574] State Transition logging – process kRunning received
[SWS_EM_02575] State Transition logging – process termination request
[SWS_EM_02576] State Transition logging – process terminated
[SWS_EM_02577] Call of Termination Handler
[SWS_EM_02578] Initial signal mask for Reporting Process
[SWS_EM_02579] Initial signal mask for Non-Reporting process
[SWS_EM_02580] Definition of API function ara::exec::ExecutionClient::ExecutionClient
[SWS_EM_02581] Definition of API function ara::exec::ExecutionClient::operator=
Table B.25: Added Specification Items in R23-11
Number Heading
[SWS_EM_01030] Restriction of process creation right for processes
[SWS_EM_01050] Start Dependent processes
[SWS_EM_01301] Cyclic Execution
[SWS_EM_01302] Cyclic Execution Control
[SWS_EM_01303] Cyclic Execution Control Sequence
[SWS_EM_01304] Service Modification
[SWS_EM_01305] Worker Pool
[SWS_EM_01306] processing Container Objects
[SWS_EM_01309] Unexpected Termination of a process
[SWS_EM_01310] Get Activation Time
[SWS_EM_01311] Activation Time Unknown
[SWS_EM_01312] Get Next Activation Time
[SWS_EM_01313] Next Activation Time Unknown
[SWS_EM_01320] Number of DeterministicClients
[SWS_EM_01321] Minimum number of required synchronization requests
[SWS_EM_01322] Calculation of the next cycle
[SWS_EM_01323] Total kRun loop count
[SWS_EM_01324] Infinite kRun loop
[SWS_EM_01325] Synchronization Request Message
[SWS_EM_01326] Synchronization Response Message
[SWS_EM_01327] Return of the wait point API
[SWS_EM_01328] Immediate return from wait point
[SWS_EM_01351] Execution Cycle Time
[SWS_EM_01352] Execution Cycle Timeout
[SWS_EM_01353] Event-triggered Cycle Activation
[SWS_EM_02000] Definition of API enum ara::exec::ExecutionState
[SWS_EM_02001] Definition of API class ara::exec::ExecutionClient
[SWS_EM_02002] Definition of API function ara::exec::ExecutionClient::~ExecutionClient
[SWS_EM_02003] Definition of API function ara::exec::ExecutionClient::ReportExecutionState
[SWS_EM_02032] On entry to the Unrecoverable State,
[SWS_EM_02033] After execution of the pre-cleanup action,
[SWS_EM_02034] After all processes managed by Execution Management terminated,
[SWS_EM_02108] Maximum memory usage
[SWS_EM_02109] process pre-mapping
[SWS_EM_02201] Definition of API enum ara::exec::ActivationReturnType
[SWS_EM_02203] Definition of API type ara::exec::DeterministicClient::TimeStamp
5
4
Number Heading
[SWS_EM_02210] Definition of API class ara::exec::DeterministicClient
[SWS_EM_02211] Definition of API function ara::exec::DeterministicClient::DeterministicClient
[SWS_EM_02215] Definition of API function ara::exec::DeterministicClient::~DeterministicClient
[SWS_EM_02217] Definition of API function ara::exec::DeterministicClient::WaitForActivation
[SWS_EM_02221] Definition of API function ara::exec::DeterministicClient::RunWorkerPool
[SWS_EM_02225] Definition of API function ara::exec::DeterministicClient::GetRandom
[SWS_EM_02226] Definition of API function ara::exec::DeterministicClient::SetRandomSeed
[SWS_EM_02231] Definition of API function ara::exec::DeterministicClient::GetActivationTime
Definition of API function ara::exec::DeterministicClient::GetNextActivation
[SWS_EM_02236]
Time
[SWS_EM_02250] Machine State Startup
[SWS_EM_02263] Definition of API class ara::exec::FunctionGroup
[SWS_EM_02266] Definition of API function ara::exec::FunctionGroup::~FunctionGroup
[SWS_EM_02267] Definition of API function ara::exec::FunctionGroup::operator==
[SWS_EM_02268] Definition of API function ara::exec::FunctionGroup::operator!=
[SWS_EM_02269] Definition of API class ara::exec::FunctionGroupState
Definition of API function ara::exec::FunctionGroupState::~FunctionGroup
[SWS_EM_02272]
State
[SWS_EM_02273] Definition of API function ara::exec::FunctionGroupState::operator==
[SWS_EM_02274] Definition of API function ara::exec::FunctionGroupState::operator!=
[SWS_EM_02275] Definition of API class ara::exec::StateClient
[SWS_EM_02276] Definition of API function ara::exec::StateClient::Create
[SWS_EM_02277] Definition of API function ara::exec::StateClient::~StateClient
[SWS_EM_02278] Definition of API function ara::exec::StateClient::SetState
Definition of API function ara::exec::StateClient::GetInitialMachineState
[SWS_EM_02279]
TransitionResult
[SWS_EM_02281] Definition of API enum ara::exec::ExecErrc
[SWS_EM_02282] Definition of API class ara::exec::ExecException
[SWS_EM_02283] Definition of API function ara::exec::ExecException::ExecException
[SWS_EM_02284] Definition of API class ara::exec::ExecErrorDomain
[SWS_EM_02286] Definition of API function ara::exec::ExecErrorDomain::ExecErrorDomain
[SWS_EM_02287] Definition of API function ara::exec::ExecErrorDomain::Name
[SWS_EM_02288] Definition of API function ara::exec::ExecErrorDomain::Message
[SWS_EM_02289] Definition of API function ara::exec::ExecErrorDomain::ThrowAsException
[SWS_EM_02290] Definition of API function ara::exec::GetExecErrorDomain
[SWS_EM_02291] Definition of API function ara::exec::MakeErrorCode
[SWS_EM_02292]
[SWS_EM_02306] Launch Behavior Validation
Unexpected Termination of starting processes during Function
[SWS_EM_02313]
Group State transition
5
4
Number Heading
Unexpected Termination of terminating processes during Function
[SWS_EM_02314]
Group State transition
[SWS_EM_02321] Definition of API function ara::exec::FunctionGroup::FunctionGroup
[SWS_EM_02322] Definition of API function ara::exec::FunctionGroup::FunctionGroup
[SWS_EM_02323] Definition of API function ara::exec::FunctionGroup::Create
Definition of API function ara::exec::FunctionGroupState::FunctionGroup
[SWS_EM_02324]
State
Definition of API function ara::exec::FunctionGroupState::FunctionGroup
[SWS_EM_02325]
State
[SWS_EM_02326] Definition of API function ara::exec::FunctionGroupState::Create
[SWS_EM_02327] Definition of API function ara::exec::FunctionGroup::operator=
[SWS_EM_02328] Definition of API function ara::exec::FunctionGroup::FunctionGroup
[SWS_EM_02329] Definition of API function ara::exec::FunctionGroup::operator=
[SWS_EM_02330] Definition of API function ara::exec::FunctionGroupState::operator=
Definition of API function ara::exec::FunctionGroupState::FunctionGroup
[SWS_EM_02331]
State
[SWS_EM_02332] Definition of API function ara::exec::FunctionGroupState::operator=
[SWS_EM_02510] Definition of API class ara::exec::WorkerRunnable
[SWS_EM_02520] Definition of API function ara::exec::WorkerRunnable::Run
[SWS_EM_02530] Definition of API class ara::exec::WorkerThread
[SWS_EM_02531] Definition of API function ara::exec::WorkerThread::WorkerThread
[SWS_EM_02532] Definition of API function ara::exec::WorkerThread::~WorkerThread
[SWS_EM_02540] Definition of API function ara::exec::WorkerThread::GetRandom
[SWS_EM_02541] Definition of API type ara::exec::ExecutionError
[SWS_EM_02542] Definition of API function ara::exec::StateClient::GetExecutionError
[SWS_EM_02544] Definition of API class ara::exec::ExecutionErrorEvent
[SWS_EM_02545] Definition of API variable ara::exec::ExecutionErrorEvent::executionError
[SWS_EM_02546] Definition of API variable ara::exec::ExecutionErrorEvent::functionGroup
[SWS_EM_02547] Obtain error information
[SWS_EM_02548] Create error information
[SWS_EM_02550] Execution Cycle Termination
[SWS_EM_02551] Missing DeterministicClient
Table B.26: Changed Specification Items in R23-11
Number Heading
[SWS_EM_02030]
[SWS_EM_02553] Rejecting a state transition to a state that the FG is already in
[SWS_EM_02554] Rejecting a state transition to a state that the FG is already transition to
Table B.27: Deleted Specification Items in R23-11
Number Heading
[SWS_EM_-
CONSTR_- Mandatory states
02556]
[SWS_EM_-
CONSTR_- Scope of machine Function Group
02557]
[SWS_EM_-
CONSTR_- Ability to shut down
02558]
[SWS_EM_-
CONSTR_- Ability to restart
02559]
Table B.28: Added Constraints in R23-11
none
none