Skip to content

Commit b286a7d

Browse files
committed
Merge branch 'main' into ebclfsa_integration_demo
2 parents 0c6c62b + 4cd4956 commit b286a7d

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

57 files changed

+6670
-3560
lines changed

.bazelrc

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,10 @@ common --extra_toolchains=@gcc_toolchain//:aarch64_gcc_13
2020
build --incompatible_strict_action_env
2121
test --test_tag_filters=-manual
2222

23+
# unshare /dev/shm and /tmp
24+
test --sandbox_tmpfs_path=/dev/shm
25+
test --sandbox_tmpfs_path=/tmp
26+
2327
build:aarch64 --platforms=@score_toolchains_gcc//platforms:aarch64-linux
2428

2529
common --registry=https://raw.githubusercontent.com/eclipse-score/bazel_registry/refs/heads/main/

.bazelversion

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
7.5.0
1+
8.3.0

.github/workflows/build_and_test_host_gcc.yml

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,10 +22,13 @@ on:
2222
types: [checks_requested]
2323
jobs:
2424
build_and_test_gcc_host_gcc12:
25-
runs-on: ubuntu-latest
26-
container:
27-
image: ghcr.io/eclipse-score/devcontainer:latest
25+
runs-on: ubuntu-24.04
2826
steps:
27+
- uses: bazel-contrib/[email protected]
28+
with:
29+
bazelisk-cache: true
30+
disk-cache: ${{ github.workflow }}
31+
repository-cache: true
2932
- name: Checkout repository
3033
uses: actions/[email protected]
3134
- name: Bazel build communication targets

MODULE.bazel

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ use_repo(crate, "crate_index")
6060
bazel_dep(name = "rules_boost", repo_name = "com_github_nelhage_rules_boost")
6161
archive_override(
6262
module_name = "rules_boost",
63-
urls = "https://github.com/nelhage/rules_boost/archive/refs/heads/master.tar.gz",
63+
urls = ["https://github.com/nelhage/rules_boost/archive/refs/heads/master.tar.gz"],
6464
strip_prefix = "rules_boost-master",
6565
)
6666
bazel_dep(name = "boost.program_options", version = "1.87.0")

MODULE.bazel.lock

Lines changed: 2306 additions & 3123 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

score/mw/com/BUILD

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ cc_gtest_unit_test(
106106
],
107107
features = COMPILER_WARNING_FEATURES,
108108
visibility = [
109-
"//score/mw/com:__pkg__",
109+
"//score/mw/com:__subpackages__",
110110
],
111111
deps = [
112112
":runtime",

score/mw/com/design/README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -181,15 +181,15 @@ visibility, i.e. an API that should be visible to the entire implementation name
181181
we use a pattern involving a friend class. In these cases, an `Example` class has a public API exposed to the end user,
182182
and one or both friend classes, named `ExampleView` and `ExampleMutableView`, will provide view or modification access,
183183
respectively, to the private members of the `ExampleClass`. We then restrict the visibility of these friend classes to
184-
the implementation namespace through an [AoU](#assumptions-of-use-aous), which effectively
184+
the implementation namespace through an [AoU](broken_link_c/issue/5835119), which effectively
185185
provides us with module-level encapsulation.
186186
Since this use of the `friend` keyword does not break encapsulation but provides us with a new kind of encapsulation
187187
that we need, we find that in spirit it does not contradict the guideline, and we deem such use as acceptable in
188188
`com::impl` namespace.
189189

190190
## Assumptions of Use (AoUs)
191191

192-
A full list of AoUs can be seen [here](#assumptions-of-use-aous). The following presents only a
192+
A full list of AoUs can be seen [here](broken_link_c/issue/6221478). The following presents only a
193193
small selection.
194194

195195
## Use of `std::terminate` in `LoLa`

score/mw/com/design/configuration/README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -173,7 +173,7 @@ initialization from a default manifest or configuration path, an explicit user p
173173
a directly handed over JSON.
174174
The sequence during startup would look like this:
175175

176-
<img src="https://www.plantuml.com/plantuml/proxy?src=https://raw.githubusercontent.com/eclipse-score/communication/refs/heads/main/score/mw/com/design/configuration/sequence_startup_view.puml">
176+
<img alt="SEQUENCE_STARTUP_VIEW" src="https://www.plantuml.com/plantuml/proxy?src=https://raw.githubusercontent.com/eclipse-score/communication/refs/heads/main/score/mw/com/design/configuration/sequence_startup_view.puml">
177177

178178
During this call a singleton instance of `score::mw::com::impl::Runtime` gets created, which gets the parsed/validated
179179
configuration in the form of `score::mw::com::detail::Configuration`.
@@ -184,4 +184,4 @@ configuration in the form of `score::mw::com::detail::Configuration`.
184184

185185
Details can be seen in the following class diagram:
186186

187-
<img src="https://www.plantuml.com/plantuml/proxy?src=https://raw.githubusercontent.com/eclipse-score/communication/refs/heads/main/score/mw/com/design/configuration/structural_view.puml">
187+
<img alt="STRUCTURAL_VIEW" src="https://www.plantuml.com/plantuml/proxy?src=https://raw.githubusercontent.com/eclipse-score/communication/refs/heads/main/score/mw/com/design/configuration/structural_view.puml">

score/mw/com/design/configuration/structural_view.puml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -137,11 +137,14 @@ package "configuration" {
137137
+ GetSenderMessageQueueSize() const noexcept : std::int32_t
138138
+ GetProcessAsilLevel() const : QualityType
139139
+ GetShmSizeCalcMode() const noexcept : ShmSizeCalculationMode
140+
+ GetApplicationId() const : score::cpp::optional<uid_t>
141+
+ SetApplicationId(uid_t application_id) : void
140142
- process_asil_level_ : QualityType
141143
- message_rx_queue_size_qm : std::int32_t
142144
- message_rx_queue_size_b : std::int32_t
143145
- message_tx_queue_size_b : std::int32_t
144146
- shm_size_calc_mode_ : ShmSizeCalculationMode
147+
- application_id_ : score::cpp::optional<uid_t>
145148
}
146149

147150
class "Global Functions" {

score/mw/com/design/events_fields/README.md

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ field-collection!
5757
Here we provide insight, how event communication is realized within our `LoLa` (shared memory based) binding. The
5858
following class diagram shows LoLa specific binding implementation and its relationship with binding independent parts:
5959

60-
<img src="https://www.plantuml.com/plantuml/proxy?src=https://raw.githubusercontent.com/eclipse-score/communication/refs/heads/main/score/mw/com/design/events_fields/event_lola_model.puml">
60+
<img alt="EVENT_LOLA_MODEL" src="https://www.plantuml.com/plantuml/proxy?src=https://raw.githubusercontent.com/eclipse-score/communication/refs/heads/main/score/mw/com/design/events_fields/event_lola_model.puml">
6161

6262
The referenced class `SubscriptionStateMachine` within this model is further detailed (including its dependent entities)
6363
further [below](#event-subscription).
@@ -188,29 +188,29 @@ The API entry point to events on the server/skeleton side is
188188
In any case a memory-allocation (rather a free event slot search) needs to be done. The general activity to be done in
189189
this case is pictured in the following activity diagram:
190190

191-
<img src="https://www.plantuml.com/plantuml/proxy?src=https://raw.githubusercontent.com/eclipse-score/communication/refs/heads/main/score/mw/com/design/events_fields/lola_event_allocate_activity.puml">
191+
<img alt="LOLA_EVENT_ALLOCATE_ACTIVITY" src="https://www.plantuml.com/plantuml/proxy?src=https://raw.githubusercontent.com/eclipse-score/communication/refs/heads/main/score/mw/com/design/events_fields/lola_event_allocate_activity.puml">
192192

193193
In case of a mixed criticality setup with an ASIL-B provider/skeleton and both - ASIL-B and ASIL-QM consumers, where
194194
discrete control structures are needed to separate ASIL-B/QM, the activities to be taken by the ASIL-B skeleton are as
195195
follows:
196196

197-
<img src="https://www.plantuml.com/plantuml/proxy?src=https://raw.githubusercontent.com/eclipse-score/communication/refs/heads/main/score/mw/com/design/events_fields/lola_event_allocate_mixed_critical_activity.puml">
197+
<img alt="LOLA_EVENT_ALLOCATE_MIXED_CRITICAL_ACTIVITY" src="https://www.plantuml.com/plantuml/proxy?src=https://raw.githubusercontent.com/eclipse-score/communication/refs/heads/main/score/mw/com/design/events_fields/lola_event_allocate_mixed_critical_activity.puml">
198198

199199
During this activity a more complex sub-activity is executed/referenced, to achieve a coherent change of slot states in
200200
both control structures (containing a rollback mechanism). This activity is modeled separately here:
201201

202-
<img src="https://www.plantuml.com/plantuml/proxy?src=https://raw.githubusercontent.com/eclipse-score/communication/refs/heads/main/score/mw/com/design/events_fields/lola_coherent_set_writing_activity.puml">
202+
<img alt="LOLA_COHERENT_SET_WRITING_ACTIVITY" src="https://www.plantuml.com/plantuml/proxy?src=https://raw.githubusercontent.com/eclipse-score/communication/refs/heads/main/score/mw/com/design/events_fields/lola_coherent_set_writing_activity.puml">
203203

204204
### Proxy side Activities for Event Access
205205

206206
The central API entry point at proxy/consumer side to access event samples (after a successful subscription) is the
207207
`GetNewSamples()` method of an event instance. The activities taken by the proxy side implementation are as follows:
208208

209-
<img src="https://www.plantuml.com/plantuml/proxy?src=https://raw.githubusercontent.com/eclipse-score/communication/refs/heads/main/score/mw/com/design/events_fields/get_new_samples_activity.puml">
209+
<img alt="GET_NEW_SAMPLES_ACTIVITY" src="https://www.plantuml.com/plantuml/proxy?src=https://raw.githubusercontent.com/eclipse-score/communication/refs/heads/main/score/mw/com/design/events_fields/get_new_samples_activity.puml">
210210

211211
The activity shown above thereby relies on activity `ReferenceNextEvent`, which is shown here:
212212

213-
<img src="https://www.plantuml.com/plantuml/proxy?src=https://raw.githubusercontent.com/eclipse-score/communication/refs/heads/main/score/mw/com/design/events_fields/lola_reference_next_event_activity.puml">
213+
<img alt="LOLA_REFERENCE_NEXT_EVENT_ACTIVITY" src="https://www.plantuml.com/plantuml/proxy?src=https://raw.githubusercontent.com/eclipse-score/communication/refs/heads/main/score/mw/com/design/events_fields/lola_reference_next_event_activity.puml">
214214

215215
The main proxy algorithm above the shared memory data structures is broken into three entities:
216216
`score::mw::com::impl::lola::ProxyEvent`, `score::mw::com::impl::lola::ProxyEventCommon` and `score::mw::com::impl::lola::SlotCollector`.
@@ -280,7 +280,7 @@ once we resort back to sideband channel communication for `Subscribe` and `Unsub
280280
We encapsulate the low-level mechanisms provided by `score::mw::com::message_passing` via
281281
class `lola::MessagePassingFacade`, which is shown in the following class model:
282282

283-
<img src="https://www.plantuml.com/plantuml/proxy?src=https://raw.githubusercontent.com/eclipse-score/communication/refs/heads/main/score/mw/com/design/events_fields/lola_message_passing_model.puml">
283+
<img alt="LOLA_MESSAGE_PASSING_MODEL" src="https://www.plantuml.com/plantuml/proxy?src=https://raw.githubusercontent.com/eclipse-score/communication/refs/heads/main/score/mw/com/design/events_fields/lola_message_passing_model.puml">
284284

285285
### `lola::MessagePassingFacade` is a Smart Proxy
286286

@@ -313,7 +313,7 @@ The `score::mw::com::message_passing::Receiver`s used by `lola::MessagePassingFa
313313
initialization of our `mw::com` runtime. Depending on the `ara::com`/`mw::com` deployment info for the
314314
executable/process, it can be decided, whether only QM (ASIL-QM) or QM and ASIL (ASIL-B) Receivers are needed.
315315

316-
<img src="https://www.plantuml.com/plantuml/proxy?src=https://raw.githubusercontent.com/eclipse-score/communication/refs/heads/main/score/mw/com/design/events_fields/lola_msg_pass_initialize_seq.puml">
316+
<img alt="LOLA_MSG_PASS_INITIALIZE_SEQ" src="https://www.plantuml.com/plantuml/proxy?src=https://raw.githubusercontent.com/eclipse-score/communication/refs/heads/main/score/mw/com/design/events_fields/lola_msg_pass_initialize_seq.puml">
317317

318318
### Event subscription
319319

@@ -340,18 +340,18 @@ instance has been described [here](../skeleton_proxy/README.md#proxy-auto-reconn
340340

341341
The structure and transitions of the state machine are shown in:
342342

343-
<img src="https://www.plantuml.com/plantuml/proxy?src=https://raw.githubusercontent.com/eclipse-score/communication/refs/heads/main/score/mw/com/design/events_fields/proxy_event_state_machine.puml">
343+
<img alt="PROXY_EVENT_STATE_MACHINE" src="https://www.plantuml.com/plantuml/proxy?src=https://raw.githubusercontent.com/eclipse-score/communication/refs/heads/main/score/mw/com/design/events_fields/proxy_event_state_machine.puml">
344344

345345
The structural model of the state machine design is as follows:
346346

347-
<img src="https://www.plantuml.com/plantuml/proxy?src=https://raw.githubusercontent.com/eclipse-score/communication/refs/heads/main/score/mw/com/design/events_fields/proxy_event_state_machine_model.puml">
347+
<img alt="PROXY_EVENT_STATE_MACHINE_MODEL" src="https://www.plantuml.com/plantuml/proxy?src=https://raw.githubusercontent.com/eclipse-score/communication/refs/heads/main/score/mw/com/design/events_fields/proxy_event_state_machine_model.puml">
348348

349349
### Event Update Notification
350350

351351
Event Notification is a good showcase for the "smart" behavior of `lola::MessagePassingFacade` as already mentioned (see
352352
example above). Here event notification registrations are aggregated and related messages are only sent once:
353353

354-
<img src="https://www.plantuml.com/plantuml/proxy?src=https://raw.githubusercontent.com/eclipse-score/communication/refs/heads/main/score/mw/com/design/events_fields/lola_msg_pass_event_notify.puml">
354+
<img alt="LOLA_MSG_PASS_EVENT_NOTIFY" src="https://www.plantuml.com/plantuml/proxy?src=https://raw.githubusercontent.com/eclipse-score/communication/refs/heads/main/score/mw/com/design/events_fields/lola_msg_pass_event_notify.puml">
355355

356356
#### Managing user provided EventReceiveHandlers
357357

@@ -438,7 +438,7 @@ looks like! This sequence builds on message passing concepts/sequences already d
438438
[Notifications between skeleton and proxy](#notifications-between-skeleton-and-proxy) and the design of data-structures
439439
placed in shared memory discussed [here](#event-related-datastructures-in-lola-binding)
440440

441-
<img src="https://www.plantuml.com/plantuml/proxy?src=https://raw.githubusercontent.com/eclipse-score/communication/refs/heads/main/score/mw/com/design/events_fields/event_poll_lola_seq.puml">
441+
<img alt="EVENT_POLL_LOLA_SEQ" src="https://www.plantuml.com/plantuml/proxy?src=https://raw.githubusercontent.com/eclipse-score/communication/refs/heads/main/score/mw/com/design/events_fields/event_poll_lola_seq.puml">
442442

443443
# General implementation details of score::mw::com
444444

@@ -471,4 +471,4 @@ central counter buried inside `SampleReferenceTracker` is atomic.
471471

472472
This sequence diagram depicts the mechanics behind the reference counting on proxy side:
473473

474-
<img src="https://www.plantuml.com/plantuml/proxy?src=https://raw.githubusercontent.com/eclipse-score/communication/refs/heads/main/score/mw/com/design/events_fields/sampleptr_ref_counting.puml">
474+
<img alt="SAMPLEPTR_REF_COUNTING" src="https://www.plantuml.com/plantuml/proxy?src=https://raw.githubusercontent.com/eclipse-score/communication/refs/heads/main/score/mw/com/design/events_fields/sampleptr_ref_counting.puml">

0 commit comments

Comments
 (0)