DEENESPTFRRUARHIKOZHNL

struct ara::core::PoolOptions

[SWS_CORE_00026] Upstream: RS_AP_00130

struct PoolOptions {...};

Implementation of std::pmr::pool_options from [mem.poly.pool_options.class]

Header-Datei#include "ara/core/memory_resource.h"
Forwarding-Header#include "ara/core/core_fwd.h"
Scopenamespace ara::core

User GuideKI-GENERIERT

Konfiguriert Block- und Chunk-Grenzen für poolbasierte Speicherressourcen.
KI-GENERIERT ungeprüft Modell: gemini-3.8-flash-medium · Aufwand: medium · Temperatur: nicht steuerbar · Prompt: 79719d3800dc Herkunft Offene Fragen (3)
KI-generiertgemini-3.8-flash-medium · 2026-10-13

Konfiguriert Block- und Chunk-Grenzen für poolbasierte Speicherressourcen.

Die Struktur ara::core::PoolOptions dient der Konfiguration von poolbasierten Speicherressourcen gemäß std::pmr::pool_options. Sie ermöglicht die Begrenzung der maximalen Blockanzahl pro Chunk über max_blocks_per_chunk [SWS_CORE_00027] sowie die Festlegung der maximalen Pool-Blockgröße über largest_required_pool_block [SWS_CORE_00028]. Als einfaches Datenaggregat wird die Struktur vor der Initialisierung der Speicherressource belegt und an deren Konstruktor übergeben. Interpretation: Da keine eigene Validierung stattfindet, müssen Entwickler sicherstellen, dass die konfigurierten Schwellenwerte den physischen Arbeitsspeicher nicht überfordern. Frage (offen)

Kontext

Die Datenstruktur ara::core::PoolOptions stellt Konfigurationsparameter für speicherpoolbasierte Ressourcen im Modul core der AUTOSAR Adaptive Platform bereit. Sie dient der gezielten Steuerung des Allokationsverhaltens und orientiert sich an der C++-Standardfunktionalität von std::pmr::pool_options. Die Struktur wird über den Header <ara/core/memory_resource.h> eingebunden und interagiert eng mit Pool-Speicherressourcen, welche zusammenhängende Chunks und Blöcke für wiederkehrende Speicheranforderungen vorhalten.

In sicherheitskritischen und echtzeitnahen Systemen ist die Begrenzung und Vorhersehbarkeit von dynamischen Speicheroperationen essenziell. ara::core::PoolOptions übernimmt in diesem Kontext die Rolle eines Entkopplers zwischen anwendungsspezifischen Kapazitätsanforderungen und der internen Verwaltung der Speicherpools. Über die Struktur können Entwickler festlegen, wie viele Blöcke maximal innerhalb eines Chunks zusammengefasst werden dürfen [SWS_CORE_00027] und welche maximale Blockgröße noch über die spezialisierten Pools bedient werden muss [SWS_CORE_00028]. Anwendungssoftware, die Speicherressourcen instanziiert, nutzt diese Optionen, um eine übermäßige Fragmentierung zu vermeiden und Allokationsgrenzen deterministisch zu steuern.

Lebenszyklus

Als einfacher Konfigurationstyp (struct) besitzt ara::core::PoolOptions einen leichtgewichtigen Lebenszyklus ohne komplexe interne Zustandsübergänge. Die Erzeugung erfolgt typischerweise als lokales Stack-Objekt oder als statische Konfigurationskonstante vor der Instanziierung der zugehörigen Speicherressource. Bei der Instanziierung werden die beiden Attribute max_blocks_per_chunk [SWS_CORE_00027] und largest_required_pool_block [SWS_CORE_00028] standardmäßig mit dem Wert 0 initialisiert.

Interpretation: Ein Wert von 0 dürfte der empfangenden Speicherressource signalisieren, dass plattformspezifische Standardgrenzen greifen sollen. Frage (offen) Da es sich um ein reines Wertobjekt handelt, besitzt ara::core::PoolOptions keine Ressourcen im Sinne von RAII und führt bei Zerstörung keine Bereinigungsaktionen aus. Der Lebenszyklus der Struktur ist üblicherweise an die Erzeugungsphase der Speicherressource gekoppelt: Sobald die Optionen an die Pool-Ressource übergeben wurden, behält die Ressource die Parameter intern bei, sodass das PoolOptions-Objekt selbst gefahrlos zerstört oder wiederverwendet werden kann.

Hinsichtlich der Nebenläufigkeit bietet die Struktur selbst keinen inhärenten Synchronisationsmechanismus. Parallele Lesezugriffe auf ein unverändertes PoolOptions-Objekt sind thread-sicher, während gleichzeitige Modifikationen extern synchronisiert werden müssen. Da das Objekt jedoch primär vor der Übergabe konfiguriert wird, findet nach der Initialisierung in der Regel kein schreibender Zugriff mehr statt.

Nutzungspfad

Der primäre Anwendungsfall umfasst die Definition der Allokationsgrenzen und die Weitergabe an eine speicherverwaltende Komponente. Zunächst erzeugt der Aufrufer eine Instanz von ara::core::PoolOptions und belegt die gewünschten Parameter. Über max_blocks_per_chunk wird die obere Schranke für Blöcke pro Chunk festgelegt [SWS_CORE_00027], während largest_required_pool_block die Obergrenze für Allokationen definiert, die noch durch den Pool abgedeckt werden sollen [SWS_CORE_00028].

Anschließend wird die belegte Struktur an den Konstruktor einer entsprechenden Pool-Speicherressource übergeben. Die Speicherressource liest die konfigurierten Werte aus und richtet ihre internen Pools entsprechend ein. Treffen im laufenden Betrieb Speicheranforderungen ein, entscheidet die Ressource anhand der zuvor konfigurierten Schwellenwerte, ob die Anforderung aus einem Pool bedient werden kann oder an eine übergeordnete Upstream-Ressource weitergeleitet werden muss. Interpretation: Es ist davon auszugehen, dass Anforderungen, die largest_required_pool_block überschreiten, typischerweise direkt an den übergeordneten Speicherverwalter delegiert werden. Frage (offen)

Konfiguration und Verwendung von PoolOptionsAnwendungPoolOptionsSpeicherressourceUse Case: KonfigurationParameter max_blocks_per_chunkund largest_required_pool_block setzenUse Case: Initialisierung der SpeicherressourceKonstruktion mit PoolOptionsOptionen auslesenParameterwerte zurückgebenUse Case: Laufzeit-AllokationSpeicher anfordernSpeicherblock bereitstellen

Sequenzdiagramm: Typischer Ablauf der Konfiguration einer Pool-Speicherressource über PoolOptions. Quellen: [SWS_CORE_00027], [SWS_CORE_00028].

Fehlerszenarien

Da ara::core::PoolOptions als einfaches Datenaggregat (struct) definiert ist, wirft die Erzeugung oder Belegung der Felder keine C++-Ausnahmen und liefert keine Fehlercodes zurück. Potenzielle Fehlerbedingungen entstehen erst bei der Interpretation der Werte durch die aufnehmende Speicherressource.

Interpretation: Werden unrealistische Werte konfiguriert — beispielsweise ein extrem großer Wert für max_blocks_per_chunk [SWS_CORE_00027] oder für largest_required_pool_block [SWS_CORE_00028] —, kann dies dazu führen, dass die nachgelagerte Speicherressource bei der Allokation von Chunks an Systemgrenzen stößt und Out-of-Memory-Zustände auslöst. Frage (offen) Vorbedingung für einen stabilen Betrieb ist daher eine sorgfältige Abstimmung der beiden Parameter auf den physisch verfügbaren Arbeitsspeicher und das erwartete Lastprofil der Anwendung. Bleiben die Werte auf 0, obliegt es der Zielressource, robuste Default-Größen einzusetzen.

Dieser Leitfaden basiert auf der Spezifikation AUTOSAR Adaptive Platform Release R25-11. Alle fachlichen Aussagen stützen sich ausschließlich auf die im Spezifikations-Payload enthaltenen Requirements.

UML-Klassendiagramm

Hohle Dreieckspfeile = Vererbung (zeigt zur Basisklasse); Klicken öffnet die jeweilige Klassenseite.

G nara__core__PoolOptions463 «struct» PoolOptions + largest_ + max_

Konstanten

largest_ variable

≙ [mem.res.pool]

std::size_t largest_required_pool_block = 0;
max_ variable

≙ [mem.res.pool]

std::size_t max_blocks_per_chunk = 0;

Dokumentation der Konstanten / Variablen

variable largest_ [SWS_CORE_00028]

std::size_t largest_required_pool_block = 0;

As per corresponding usage in [mem.res.pool]

Header-Datei#include "ara/core/memory_resource.h"
Scopestruct ara::core::PoolOptions
Symbollargest_required_pool_block
Typstd::size_t

Request a governed re-review of this record. The record is not changed immediately.

Record
AUTOSAR/AP/record/SWS_CORE_00028
Status
valid/unmigrated
Version
AUTOSAR/AP/record/SWS_CORE_00028@rel:R25-11#09a93b7f
Content hash
09a93b7f
Source
https://www.autosar.org/fileadmin/standards/R25-11/AP/AUTOSAR_AP_SWS_Core.pdf#nameddest=SWS_CORE_00028
Status: valid/unmigrated Version: rel:R25-11#a3bf6d56 Versionshistorie & Revisions (1 transition, 3 revision)
Current State
valid/unmigrated
Reason
mechanically backfilled by migriere_status_backfill.py -- no per-field curation history exists yet for this record
Campaign
2026-08-13-status-backfill
Active Version
AUTOSAR/AP/record/SWS_CORE_00028@rel:R25-11#a3bf6d56
Point-in-Time History:
Recorded Revisions (3):
  • R25-11rel:R25-11#09a93b7f2026-09-30
  • R24-11rel:R24-11#0f29769e2026-10-14
  • R25-11rel:R25-11#a3bf6d562026-10-14 active
DateActorTransitionReason / RationaleCampaign
2026-08-13toolnone → valid/unmigratedmechanically backfilled by migriere_status_backfill.py -- no per-field curation history exists yet for this record2026-08-13-status-backfill

variable max_ [SWS_CORE_00027]

std::size_t max_blocks_per_chunk = 0;

As per corresponding usage in [mem.res.pool]

Header-Datei#include "ara/core/memory_resource.h"
Scopestruct ara::core::PoolOptions
Symbolmax_blocks_per_chunk
Typstd::size_t

Request a governed re-review of this record. The record is not changed immediately.

Record
AUTOSAR/AP/record/SWS_CORE_00027
Status
valid/unmigrated
Version
AUTOSAR/AP/record/SWS_CORE_00027@rel:R25-11#3e26306e
Content hash
3e26306e
Source
https://www.autosar.org/fileadmin/standards/R25-11/AP/AUTOSAR_AP_SWS_Core.pdf#nameddest=SWS_CORE_00027
Status: valid/unmigrated Version: rel:R25-11#fc3e04ef Versionshistorie & Revisions (1 transition, 3 revision)
Current State
valid/unmigrated
Reason
mechanically backfilled by migriere_status_backfill.py -- no per-field curation history exists yet for this record
Campaign
2026-08-13-status-backfill
Active Version
AUTOSAR/AP/record/SWS_CORE_00027@rel:R25-11#fc3e04ef
Point-in-Time History:
Recorded Revisions (3):
  • R25-11rel:R25-11#3e26306e2026-09-30
  • R24-11rel:R24-11#cd619fd92026-10-14
  • R25-11rel:R25-11#fc3e04ef2026-10-14 active
DateActorTransitionReason / RationaleCampaign
2026-08-13toolnone → valid/unmigratedmechanically backfilled by migriere_status_backfill.py -- no per-field curation history exists yet for this record2026-08-13-status-backfill