Skip to content

Commit b670fe6

Browse files
Merge pull request eclipse-score#2515 from eclipse-score/aschemmel-tech-add-os-integration
OS module requirements and AoU
2 parents 027c8f3 + 6c1e7d9 commit b670fe6

File tree

11 files changed

+326
-29
lines changed

11 files changed

+326
-29
lines changed

docs/modules/baselibs/memory_shared/docs/architecture/index.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ Memory Shared Component Architecture
2121
:safety: ASIL_B
2222
:status: valid
2323
:implements: logic_arc_int__baselibs__memory_shared
24-
:uses: logic_arc_int__os__fcntl, logic_arc_int__os__stat, logic_arc_int__os__mmap
24+
:uses: logic_arc_int__os__fcntl, logic_arc_int__os__stat, logic_arc_int__os__mman
2525

2626
.. needarch::
2727
:scale: 50

docs/modules/communication/docs/requirements/aou_req.rst

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,17 @@
1+
..
2+
# *******************************************************************************
3+
# Copyright (c) 2025 Contributors to the Eclipse Foundation
4+
#
5+
# See the NOTICE file(s) distributed with this work for additional
6+
# information regarding copyright ownership.
7+
#
8+
# This program and the accompanying materials are made available under the
9+
# terms of the Apache License Version 2.0 which is available at
10+
# https://www.apache.org/licenses/LICENSE-2.0
11+
#
12+
# SPDX-License-Identifier: Apache-2.0
13+
# *******************************************************************************
14+
115
Assumptions of Use
216
##################
317

docs/modules/lifecycle/index.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ Lifecycle
4343
:status: valid
4444
:safety: ASIL_B
4545
:implements: logic_arc_int__lifecycle__controlif, logic_arc_int__lifecycle__alive_if
46-
:uses: logic_arc_int__logging__logging, logic_arc_int__baselibs__json, logic_arc_int__os__fork, logic_arc_int__lifecycle__lifecycle_if
46+
:uses: logic_arc_int__logging__logging, logic_arc_int__baselibs__json, logic_arc_int__os__unistd, logic_arc_int__lifecycle__lifecycle_if
4747
:security: NO
4848

4949

docs/modules/os/docs/index.rst

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,22 @@
1818
:safety: ASIL_B
1919
:security: YES
2020
:includes: comp__os_libc, comp__os_message_passing
21+
:tags: external
2122

22-
.. mod_view_sta:: OS
23+
.. mod_view_sta:: OS (external)
2324
:id: mod_view_sta__os__os
24-
:includes: comp__os_libc, comp__os_message_passing
25+
:includes: comp__os_libc, comp__os_message_passing, comp__os_libcpp
2526
:belongs_to: mod__os
2627

28+
The module "OS" is not a part of the S-CORE SW-Platform, but it is a crucial external SW element.
29+
Its components are modelled in S-CORE to be able to describe dependencies of S-CORE features to this external component.
30+
As it is external to S-CORE, the (folder/file) structure of the documentation may be different from the other modules.
31+
Its main content is the operating system environment (sometimes also already called a "SW platform").
32+
But also other SW components are modelled as a part of it as these are often provided by the "OS" supplier.
33+
One example of these "other" SW components are the C/C++ libs which may come from a processor manufacturer instead.
34+
S-CORE expects to support integration of more than one operating system, so these may be seen already in this module view,
35+
as different components. Requirements on this OS integration are documented in :need:`doc__os_requirements`.
36+
2737
.. needarch::
2838
:scale: 50
2939
:align: center
@@ -36,3 +46,6 @@ Module Documents
3646
.. toctree::
3747
:maxdepth: 2
3848
:titlesonly:
49+
50+
requirements/index.rst
51+
requirements/aou_req.rst
Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
..
2+
# *******************************************************************************
3+
# Copyright (c) 2026 Contributors to the Eclipse Foundation
4+
#
5+
# See the NOTICE file(s) distributed with this work for additional
6+
# information regarding copyright ownership.
7+
#
8+
# This program and the accompanying materials are made available under the
9+
# terms of the Apache License Version 2.0 which is available at
10+
# https://www.apache.org/licenses/LICENSE-2.0
11+
#
12+
# SPDX-License-Identifier: Apache-2.0
13+
# *******************************************************************************
14+
15+
Assumptions of Use
16+
##################
17+
18+
.. document:: Operating System Assumptions of Use
19+
:id: doc__os_aou
20+
:status: draft
21+
:safety: ASIL_B
22+
:security: YES
23+
:realizes: wp__requirements_comp
24+
25+
.. aou_req:: No Root Privileges
26+
:id: aou_req__os__nonroot
27+
:reqtype: Functional
28+
:security: YES
29+
:safety: ASIL_B
30+
:status: valid
31+
32+
No process running on the SW-platform shall request root privileges.
33+
34+
Note: The root privilege is dangerous for security and safety as it destroys process isolation.
35+
36+
.. aou_req:: Safe OS Function Use
37+
:id: aou_req__os__safe_fctn_use
38+
:reqtype: Functional
39+
:security: YES
40+
:safety: ASIL_B
41+
:status: valid
42+
43+
If an application or SW-platform component is safety relevant and uses OS functions, it shall only use the safe functions.
44+
45+
Note: For checking the "to be expected" safe functions the developer can consider the safe function list
46+
published by the OS supplier. For QNX this can be found for example in `appendices here <https://fs-products.tuvasi.com/certificates?keywords=Blackberry&productcategory_id=1#prodid_9842>`_ (for one version).
47+
48+
.. aou_req:: OS Public API Use
49+
:id: aou_req__os__public_api
50+
:reqtype: Functional
51+
:security: YES
52+
:safety: ASIL_B
53+
:status: valid
54+
55+
All components shall only use the public API of the OS components.
56+
57+
.. aou_req:: C++ Library Preference
58+
:id: aou_req__os__cxx_preference
59+
:reqtype: Functional
60+
:security: YES
61+
:safety: ASIL_B
62+
:status: valid
63+
64+
All components should prefer the use of C++ standard lib over the C lib to call a functionality.
65+
If C lib must be used, it shall not be mixed with C++ lib for the same functionality.
66+
67+
.. aou_req:: Minimal Process Privileges
68+
:id: aou_req__os__minimal_privileges
69+
:reqtype: Functional
70+
:security: YES
71+
:safety: ASIL_B
72+
:status: valid
73+
74+
All components shall only use the privileges that are indispensable for their function.
75+
76+
Note1: OS safety manuals provide lists of allowed and not allowed privileges.
77+
78+
Note2: One example is the "channel connect" - only IPC connections are allowed which are specified in the architecture.
79+
80+
Note3: Another example is mmap_peer which would allow accessing other processes memory if wrongly used.
81+
82+
.. needextend:: "__os_" in id
83+
:+tags: operating_system
Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
..
2+
# *******************************************************************************
3+
# Copyright (c) 2026 Contributors to the Eclipse Foundation
4+
#
5+
# See the NOTICE file(s) distributed with this work for additional
6+
# information regarding copyright ownership.
7+
#
8+
# This program and the accompanying materials are made available under the
9+
# terms of the Apache License Version 2.0 which is available at
10+
# https://www.apache.org/licenses/LICENSE-2.0
11+
#
12+
# SPDX-License-Identifier: Apache-2.0
13+
# *******************************************************************************
14+
15+
16+
17+
Requirements
18+
############
19+
20+
.. document:: Operating System Requirements
21+
:id: doc__os_requirements
22+
:status: draft
23+
:safety: ASIL_B
24+
:security: YES
25+
:realizes: wp__requirements_comp
26+
27+
Generally the OS (as an external SW element) is expected by the S-CORE project to fulfill the following requirements,
28+
defined in the SW-platform assumptions (and partly even in the Stakeholder requirements).
29+
30+
The system integrator integrating S-CORE with the OS to provide a safe product has to make sure
31+
32+
- the functional requirements below are matching the OS used - see also :need:`aou_req__platform__safety_matching`
33+
- the non-functional (integration) requirements below are fulfilled by the OS supplier - see also :ref:`integration_assumptions`
34+
35+
Integration Requirements
36+
========================
37+
38+
Community Level
39+
---------------
40+
41+
- :need:`aou_req__platform__integration_assistance`
42+
- :need:`aou_req__platform__os_integration_manual`
43+
- :need:`aou_req__platform__bug_interface`
44+
45+
Functional Level
46+
----------------
47+
48+
- :need:`aou_req__platform__bazel_tooling`
49+
- :need:`aou_req__platform__bug_fixing`
50+
51+
Certifiable Level
52+
-----------------
53+
54+
- :need:`aou_req__platform__levels`
55+
- :need:`aou_req__platform__safety_aou`
56+
- :need:`aou_req__platform__safety_functions`
57+
- :need:`aou_req__platform__safety_anomaly`
58+
59+
60+
OS Specific Functional Requirements
61+
===================================
62+
63+
- :need:`aou_req__platform__process_isolation`
64+
- :need:`aou_req__platform__os_safety_functions`
65+
- :need:`aou_req__platform__posix_operating_system`

docs/modules/os/libc/docs/architecture/index.rst

Lines changed: 25 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,12 @@
1515
libc Component Architecture
1616
***************************
1717

18-
.. comp:: os::libc
18+
.. comp:: libc
1919
:id: comp__os_libc
2020
:security: YES
2121
:safety: ASIL_B
2222
:status: valid
23-
:implements: logic_arc_int__os__fcntl, logic_arc_int__os__stat, logic_arc_int__os__mmap, logic_arc_int__os__fork
23+
:implements: logic_arc_int__os__fcntl, logic_arc_int__os__stat, logic_arc_int__os__mman, logic_arc_int__os__unistd
2424

2525
.. comp_arc_sta:: libc
2626
:id: comp_arc_sta__os__libc
@@ -72,8 +72,8 @@ libc Component Architecture
7272
:status: valid
7373
:included_by: logic_arc_int__os__fcntl
7474

75-
.. logic_arc_int:: mmap
76-
:id: logic_arc_int__os__mmap
75+
.. logic_arc_int:: mman
76+
:id: logic_arc_int__os__mman
7777
:security: YES
7878
:safety: ASIL_B
7979
:status: valid
@@ -91,14 +91,14 @@ libc Component Architecture
9191
:security: YES
9292
:safety: ASIL_B
9393
:status: valid
94-
:included_by: logic_arc_int__os__mmap
94+
:included_by: logic_arc_int__os__mman
9595

9696
.. logic_arc_int_op:: SHM Unlink
9797
:id: logic_arc_int_op__os__shm_unlink
9898
:security: YES
9999
:safety: ASIL_B
100100
:status: valid
101-
:included_by: logic_arc_int__os__mmap
101+
:included_by: logic_arc_int__os__mman
102102

103103
.. logic_arc_int:: stat
104104
:id: logic_arc_int__os__stat
@@ -153,3 +153,22 @@ libc Component Architecture
153153
:safety: ASIL_B
154154
:status: valid
155155
:included_by: logic_arc_int__os__stat
156+
157+
.. logic_arc_int:: unistd
158+
:id: logic_arc_int__os__unistd
159+
:security: YES
160+
:safety: ASIL_B
161+
:status: valid
162+
163+
.. needarch::
164+
:scale: 50
165+
:align: center
166+
167+
{{ draw_interface(need(), needs) }}
168+
169+
.. logic_arc_int_op:: fork
170+
:id: logic_arc_int_op__os__fork
171+
:security: YES
172+
:safety: ASIL_B
173+
:status: valid
174+
:included_by: logic_arc_int__os__unistd
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
..
2+
# *******************************************************************************
3+
# Copyright (c) 2026 Contributors to the Eclipse Foundation
4+
#
5+
# See the NOTICE file(s) distributed with this work for additional
6+
# information regarding copyright ownership.
7+
#
8+
# This program and the accompanying materials are made available under the
9+
# terms of the Apache License Version 2.0 which is available at
10+
# https://www.apache.org/licenses/LICENSE-2.0
11+
#
12+
# SPDX-License-Identifier: Apache-2.0
13+
# *******************************************************************************
14+
15+
libcpp Component Architecture
16+
*****************************
17+
18+
.. comp:: libcpp
19+
:id: comp__os_libcpp
20+
:status: valid
21+
:safety: ASIL_B
22+
:implements: logic_arc_int__os__libcpp
23+
:security: YES
24+
25+
.. comp_arc_sta:: C++ Std Library
26+
:id: comp_arc_sta__os__libcpp
27+
:security: YES
28+
:safety: ASIL_B
29+
:status: valid
30+
:satisfies:
31+
:belongs_to: comp__os_libcpp
32+
:fulfils: comp_req__component_name__some_title
33+
34+
.. needarch::
35+
:scale: 50
36+
:align: center
37+
38+
{{ draw_component(need(), needs) }}
39+
40+
.. logic_arc_int:: Library headers (C++17)
41+
:id: logic_arc_int__os__libcpp
42+
:security: YES
43+
:safety: ASIL_B
44+
:status: valid
45+
46+
.. needarch::
47+
:scale: 50
48+
:align: center
49+
50+
{{ draw_interface(need(), needs) }}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
..
2+
# *******************************************************************************
3+
# Copyright (c) 2026 Contributors to the Eclipse Foundation
4+
#
5+
# See the NOTICE file(s) distributed with this work for additional
6+
# information regarding copyright ownership.
7+
#
8+
# This program and the accompanying materials are made available under the
9+
# terms of the Apache License Version 2.0 which is available at
10+
# https://www.apache.org/licenses/LICENSE-2.0
11+
#
12+
# SPDX-License-Identifier: Apache-2.0
13+
# *******************************************************************************
14+
15+
.. _comp_doc_libcpp:
16+
17+
libcpp
18+
######
19+
20+
Component Documents
21+
===================
22+
23+
.. toctree::
24+
:maxdepth: 2
25+
:titlesonly:
26+
27+
architecture/index

docs/modules/os/message_passing/docs/architecture/index.rst

Lines changed: 1 addition & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ Message Passing Component Architecture
2121
:safety: ASIL_B
2222
:status: valid
2323
:implements: logic_arc_int__os__message_passing
24+
:satisfies:
2425

2526

2627
.. comp_arc_sta:: QNX::Message Passing Static View
@@ -49,18 +50,6 @@ Message Passing Component Architecture
4950

5051
{{ draw_interface(need(), needs) }}
5152

52-
.. logic_arc_int:: OS::fork
53-
:id: logic_arc_int__os__fork
54-
:security: YES
55-
:safety: ASIL_B
56-
:status: valid
57-
58-
.. needarch::
59-
:scale: 50
60-
:align: center
61-
62-
{{ draw_interface(need(), needs) }}
63-
6453
.. logic_arc_int_op:: Reply
6554
:id: logic_arc_int_op__os__reply
6655
:security: YES

0 commit comments

Comments
 (0)