模块 ara::per — Persistency
模块指南人工智能生成
以持久、事务安全且硬件抽象的方式保存结构化键值对和文件。
以持久、事务安全且硬件抽象的方式保存结构化键值对和文件。
Adaptive模块Persistency(ara::per)提供了一个用于非易失性数据存储的独立于硬件的抽象层,涵盖了结构化键值存储(KeyValueStorage)和基于文件的访问(FileStorage)(EXP_SWArchitecture 第43页)。对键值对的修改会进行内存缓冲,并且需要显式的同步调用(SyncToStorage)以进行持久化保存([SWS_PER_00049])。除数据完整性和恢复机制外,该模块还管理软件更新期间的更新与迁移过程([SWS_PER_00357])。
功能集群Persistency(ara::per)为AUTOSAR Adaptive Platform提供了用于非易失性数据存储的标准化抽象层(EXP_SWArchitecture 第43页)。它提供了两种基本访问模型:用于结构化参数的基于键的存储KeyValueStorage,以及用于非结构化有效负载数据流的基于文件的存储FileStorage(SWS_Persistency 第219页)。Adaptive Applications以及中央平台守护进程(如State Management、Diagnostic Management或Update and Configuration Management)均使用这些接口持久化存储其状态,而与物理文件系统或闪存驱动程序无关(EXP_SWArchitecture 第93页)。
上下文图:Persistency集群在Adaptive Platform中的嵌入情况,包括应用程序和平台使用者以及底层操作系统。来源:EXP_SWArchitecture 第93页、EXP_SWArchitecture 第43页。
KeyValueStorage中的写操作遵循严格的内存事务语义([SWS_PER_00046])。对键值对的修改首先保持在易失性缓冲中,仅在通过同步调用SyncToStorage后才永久写入存储介质([SWS_PER_00049]),而DiscardPendingChanges则丢弃未保存的状态([SWS_PER_00365])。在FileStorage中,通过专用、类型化的访问器(ReadAccessor、WriteAccessor、ReadWriteAccessor)进行访问,这些访问器专门通过UniqueHandle进行管理([SWS_PER_00113]、[SWS_PER_00114]、[SWS_PER_00115])。
时序图:具有内存缓冲和物理刷新的键值存储的写入和同步序列。来源:[SWS_PER_00046]、[SWS_PER_00049]、[SWS_PER_00365]、EXP_SWArchitecture 第230页。
此外,该模块还集成了用于生命周期和容错的全面机制:运行期间的配置更改通过CheckForManifestUpdate和ReloadPersistencyManifest处理([SWS_PER_00576]、[SWS_PER_00577]),而应用程序特定的数据迁移则通过更新回调进行([SWS_PER_00356]、[SWS_PER_00357])。如果基于清单的冗余或完整性检查失败,回调会通报损坏状态([SWS_PER_00433]),随后损坏的数据可通过RecoverKeyValueStorage、RecoverFile或重置操作进行修复([SWS_PER_00333]、[SWS_PER_00337]、[SWS_PER_00334])。
ara::per的系统边界与架构集成
功能集群Persistency(ara::per)为AUTOSAR Adaptive Platform上的非易失性数据存储提供标准化抽象机制(EXP_SWArchitecture 第43页)。它将用户定义的应用程序和功能平台服务与操作系统特定的文件系统、分区结构以及闪存或NVRAM驱动程序解耦(EXP_SWArchitecture 第93页)。其提供两种独立的主要存储范式:通过KeyValueStorage进行的基于键的数据访问,以及通过FileStorage进行的层次化文件存储(SWS_Persistency 第219页)。诸如Diagnostic Management(EXP_SWArchitecture 第176页)、State Management(EXP_SWArchitecture 第55页)、Update and Configuration Management(SWS_UpdateAndConfigurationManagement 第18页)和Remote Persistency(SWS_RemotePersistency 第9页)等平台服务将这些接口用作标准化端口接口([SWS_PER_00052]、[SWS_PER_00116])。
除了提供本地存储抽象之外,ara::per还在与宿主操作系统的接口处直接集成了加密原语和冗余检查(EXP_SWArchitecture 第230页)。Persistency存储的功能配置在AUTOSAR清单中进行声明式建模,并将配额规范、完整性哈希、CRC方法以及加密路径绑定到具体实例(SWS_Persistency 第104页)。其他功能集群的库组件通过各自的目标配置直接绑定Persistency,而守护进程则类似于常规应用程序通过Instance-Specifier访问存储单元(SWS_Persistency 第35页)。
上下文图:Persistency集群在Adaptive Platform中的嵌入情况,包括应用程序和平台使用者以及底层操作系统。来源:EXP_SWArchitecture 第93页、EXP_SWArchitecture 第43页。
键值存储:实例化、事务语义与刷新机制
对结构化参数的访问通过类ara::per::KeyValueStorage进行,该类通过指定ara::core::InstanceSpecifier调用ara::per::OpenKeyValueStorage打开([SWS_PER_00052])。返回的SharedHandle<KeyValueStorage>以类型安全的方式封装了存储区域,并通过基础容器已删除的移动和复制构造函数防止不受控的重复([SWS_PER_00322]、[SWS_PER_00324]、[SWS_PER_00367])。键值对通过SetValue([SWS_PER_00046])和GetValue([SWS_PER_00044]、[SWS_PER_00332])进行修改或查询;其中KeyExists([SWS_PER_00043])提供存在性检查,GetAllKeys([SWS_PER_00042])提供所有活动键的完整列表。
写入和删除操作遵循严格的内存事务语义:通过SetValue、RemoveKey([SWS_PER_00047])或RemoveAllKeys([SWS_PER_00048])进行的更改最初保留在进程的易失性缓冲区中(EXP_SWArchitecture 第230页)。仅当显式调用SyncToStorage时,才会以原子方式将所有待处理的修改永久保存到物理介质上([SWS_PER_00049])。如果要丢弃尚未写入的事务步骤,DiscardPendingChanges会将状态重置为最后一次SyncToStorage或打开时的状态([SWS_PER_00365])。可以通过GetCurrentValueSize([SWS_PER_00554])监控单个值的存储需求,并通过GetCurrentKeyValueStorageSize([SWS_PER_00405])聚合监控包含冗余和元数据的存储需求(EXP_SWArchitecture 第231页)。
时序图:具有内存缓冲和物理刷新的键值存储的写入和同步序列。来源:[SWS_PER_00046]、[SWS_PER_00049]、[SWS_PER_00365]、EXP_SWArchitecture 第230页。
基于文件的存储访问与类型化访问器层次结构
类ara::per::FileStorage用于非结构化数据流、二进制块或日志文件,它通过ara::per::OpenFileStorage进行初始化([SWS_PER_00116])。在FileStorage容器中,可以通过GetAllFileNames列出已存在的文件([SWS_PER_00110]),通过FileExists检查其是否存在([SWS_PER_00112]),或通过DeleteFile删除文件([SWS_PER_00111])。大小配额通过GetCurrentFileSize([SWS_PER_00407])和GetCurrentFileStorageSize([SWS_PER_00406])确定(EXP_SWArchitecture 第231页)。
文件访问本身遵循通过专用访问器类进行接口分离的原则(EXP_SWArchitecture 第88页)。根据所需的模式(OpenMode、[SWS_PER_00147],可通过按位运算符[SWS_PER_00144]、[SWS_PER_00434]组合),工厂方法生成独占的UniqueHandle实例([SWS_PER_00371]、[SWS_PER_00569]):
OpenFileReadOnly([SWS_PER_00114]、[SWS_PER_00376]、[SWS_PER_00430]):返回用于读操作的UniqueHandle<ReadAccessor>,如ReadText([SWS_PER_00165]、[SWS_PER_00420])、ReadLine([SWS_PER_00119])、GetChar([SWS_PER_00168])、PeekChar([SWS_PER_00167])、ReadBinary([SWS_PER_00421]、[SWS_PER_00422])、GetByte([SWS_PER_00419])和PeekByte([SWS_PER_00418])。OpenFileWriteOnly([SWS_PER_00115]、[SWS_PER_00377]、[SWS_PER_00431]):返回用于写操作的UniqueHandle<WriteAccessor>,操作途径包括WriteText([SWS_PER_00166])、WriteBinary([SWS_PER_00423])、便捷流操作符([SWS_PER_00125])、通过SetFileSize([SWS_PER_00428])进行的文件截断以及通过SyncToFile([SWS_PER_00122])进行的物理刷新。OpenFileReadWrite([SWS_PER_00113]、[SWS_PER_00375]、[SWS_PER_00429]):在单个UniqueHandle<ReadWriteAccessor>中结合了读写能力。
常见的定位和大小操作,如GetPosition([SWS_PER_00162])、SetPosition([SWS_PER_00163])、使用MovePosition和枚举Origin([SWS_PER_00146]、[SWS_PER_00164])、GetSize([SWS_PER_00424])进行的相对导航,以及文件结束检查IsEof([SWS_PER_00107]),都固定在通用基类FileAccessor中。扩展的文件元数据(如时间戳和创建原因)通过GetFileInfo和结构体FileInfo读取([SWS_PER_00435]、[SWS_PER_00436]、[SWS_PER_00438]、[SWS_PER_00441]、[SWS_PER_00442]、[SWS_PER_00443]、[SWS_PER_00444]、[SWS_PER_00445])。解释:严格分离为不可复制的访问器实例,除了类型安全之外,主要应是为了在操作系统级别确定性地防止并发写冲突。 问题 Q-a990a7aa44326447 (未决)
结构图:文件访问类和访问器句柄的接口与类层次结构。来源:[SWS_PER_00113]、[SWS_PER_00114]、[SWS_PER_00115]、EXP_SWArchitecture 第88页。
生命周期管理、更新流程与清单同步
针对Update and Configuration Management(UCM)执行的软件更新和全新安装,Persistency提供了专门的生命周期操作(EXP_SWArchitecture 第92页)。如果在应用程序运行期间应用了更新的目标配置,则应用程序可以使用CheckForManifestUpdate来确定是否存在配置更改([SWS_PER_00576])。使用ReloadPersistencyManifest,ara::per重新读取更新后的配置,随后更改的存储定义将在下次关闭并重新打开后生效([SWS_PER_00577])。
为了迁移现有的应用程序数据,通过RegisterApplicationDataUpdateCallback注册一个回调函数,当基于不同的契约版本状态需要进行数据迁移时,该函数由ara::per触发([SWS_PER_00356])。单个元素的选择性更改可以通过RegisterDataUpdateIndication进行监控([SWS_PER_00578])。Persistency更新的整个过程在验证阶段由UpdatePersistency触发([SWS_PER_00357])。在成功更新之后,CleanUpPersistency会删除过时的备份和迁移数据([SWS_PER_00567]),而ResetPersistency则完全清空存储区域,以便在下次打开时从清单中全新生成([SWS_PER_00358])。
时序图:包含配置检查、回调迁移和清理的Persistency更新流程。来源:[SWS_PER_00356]、[SWS_PER_00357]、[SWS_PER_00567]、[SWS_PER_00576]、[SWS_PER_00577]、EXP_SWArchitecture 第92页。
完整性监控、冗余处理与恢复
为了捕获损坏的数据记录,键值存储和文件存储支持可配置的冗余副本和完整性机制(CRC、哈希、MAC身份验证和加密)(SWS_Persistency 第104页、EXP_SWArchitecture 第230页)。如果内部冗余检查失败,可以通过RegisterRecoveryReportCallback通知安全相关应用程序([SWS_PER_00433])。该回调传递RecoveryReportKind(例如kKeyValueStorageRecoveryFailed)以及受影响的实例和键/文件名([SWS_PER_00432]、EXP_SWArchitecture 第91页)。
为了有针对性地恢复受损数据,提供了细粒度的修复和重置方法:
- 恢复:在存储层级,
RecoverKeyValueStorage([SWS_PER_00333])和RecoverAllFiles([SWS_PER_00335])允许修复已关闭的容器;在元素层级,RecoverKey([SWS_PER_00427])和RecoverFile([SWS_PER_00337])以尽力而为的方式恢复单个损坏的条目。 - 重置为出厂值:通过
ResetKeyValueStorage([SWS_PER_00334])和ResetAllFiles([SWS_PER_00336]),可以将容器重置为初始交付时的状态;类似地,ResetKey([SWS_PER_00426])或ResetFile([SWS_PER_00338])将单个元素置于其配置的初始状态。
活动图:数据损坏时的决策路径,从冗余检查经由回调直至恢复或重置。来源:[SWS_PER_00333]、[SWS_PER_00334]、[SWS_PER_00432]、[SWS_PER_00433]。
发生错误时的行为
ara::per中的错误状态不是通过不受控的C++异常传播,而是通过返回值类型ara::core::Result确定性地表示([SWS_PER_00044]、[SWS_PER_00113])。该模块通过GetPerDomain定义了自己的错误域([SWS_PER_00352]),由PerErrorDomain实现,通过Name([SWS_PER_00314])和Message([SWS_PER_00315])以及枚举PerErrc或类型别名Errc进行标准化错误解析([SWS_PER_00311]、[SWS_PER_00411])。对于启用了异常的环境,提供了PerException([SWS_PER_00355]、[SWS_PER_00412])和ThrowAsException([SWS_PER_00350]),而MakeErrorCode封装了平台合规错误代码的创建([SWS_PER_00351])。
典型的错误代码涵盖与资源和并发相关的冲突:如果相关存储元素已打开或正在被维护操作(如UpdatePersistency)并行修改,则操作如OpenKeyValueStorage([SWS_PER_00052])、OpenFileStorage([SWS_PER_00116])、DeleteFile([SWS_PER_00111])或RecoverKeyValueStorage([SWS_PER_00333])将以kResourceBusy失败。在分配不兼容的类型时,SetValue会报告错误kDataTypeMismatch([SWS_PER_00046])。对于物理硬件错误(PerErrc::kPhysical),会区分是否存在回滚语义(例如在读和定位操作如[SWS_PER_00167]、[SWS_PER_00168]中指针保持不变),或者是否可能发生没有回滚保证的数据损坏(例如在[SWS_PER_00122]、[SWS_PER_00166]、[SWS_PER_00423]中)。
为了诊断同步和访问错误,该模块生成标准化的DLT日志消息(SWS_Persistency 第110页)。在此,像SyncToStorage(消息ID 0x80008037)、SyncToFile(0x80008036)和DiscardPendingChanges(0x80008038)这样的消息会详细记录受影响的键集和存储占用情况,从而即使在不完全关机(例如通过ara::core::Deinitialize)的情况下也能保持状态的可重构性(SWS_Persistency 第110页)。
进一步详细证据
Persistency集群的架构和交互基于以下规范性要求和文档出处:
- 架构接口与集群耦合:向更高层平台守护进程提供
KeyValueStorage和FileStorage固定在EXP_SWArchitecture 第90页、EXP_SWArchitecture 第87页、EXP_SWArchitecture 第55页(State Management)、EXP_SWArchitecture 第145页(VUCM)、EXP_SWArchitecture 第176页(DM)和SWS_RemotePersistency 第9页中。 - 存储计算与配额控制:容器和文件层级分配大小的确定基于[SWS_PER_00405]、[SWS_PER_00406]、[SWS_PER_00407]以及EXP_SWArchitecture 第231页和EXP_SWArchitecture 第231页中的相关交互场景。
- 事务完整性与加密连接:通过内存管理的两阶段提交过程以及通过Cryptography Stack进行的安全防护基于[SWS_PER_00049]、[SWS_PER_00365]和EXP_SWArchitecture 第230页。
- 更新与迁移框架:软件更新和清单重新加载的协调由[SWS_PER_00356]、[SWS_PER_00357]、[SWS_PER_00567]、[SWS_PER_00576]、[SWS_PER_00577]和EXP_SWArchitecture 第92页指定。
本模块指南基于AUTOSAR Adaptive版本R25-11的规范。所述内容仅基于具有约束力的SWS需求和分配的架构文档。
function: 116 class: 10 enumeration: 6 variable: 5 type alias: 2 struct: 1
类
FileAccessorFileInfoFileStorageKeyValueStoragePerErrorDomainPerExceptionReadAccessorReadWriteAccessorSharedHandleUniqueHandleWriteAccessor函数
CheckForManifestUpdateCleanUpPersistencyGetCurrentFileStorageSizeGetCurrentKeyValueStorageSizeGetPerDomainMakeErrorCodeOpenFileStorageOpenKeyValueStorageoperator|operator|=RecoverAllFilesRecoverKeyValueStorageRegisterApplicationDataUpdateCallbackRegisterDataUpdateIndicationRegisterRecoveryReportCallbackReloadPersistencyManifestResetAllFilesResetKeyValueStorageResetPersistencyUpdatePersistency枚举
FileCreationStateFileModificationStateOpenModeOriginPerErrcRecoveryReportKind主题图
ara::per
37此版本没有元素数据
ara::per
FileAccessor contains a common basis for ReadAccessor and WriteAccessor
作为基类 ReadAccessor, WriteAccessor
This structure contains additional information on a file returned by GetFileInfo.
The File Storage contains a set of files identified by their file names.
The Key-Value Storage contains a set of keys with associated values.
Defines the error domain for Persistency.
继承自 ara::core::ErrorDomain
Exception type thrown by Persistency.
继承自 ara::core::Exception
ReadWriteAccessor is used to read and write file data
Handle to a ReadAccessor or ReadWriteAccessor
Checks for updates of the Persistency Target Configuration. This method can be used to detect configuration updates that are installed by UCM while the Adaptive Application that uses Persistency is running. To re-read the updated Target Configuration, the Adaptive Application needs to call ara::per:: ReloadPersistencyManifest.
ara::core::Result< bool > CheckForManifestUpdate () noexcept;Removes backup data and other unused data of all Persistency Key-Value Storages and File Storages.
ara::core::Result< void > CleanUpPersistency () noexcept;Returns the space in bytes currently occupied by a File Storage. The returned size includes all metadata and the space used for redundancy and backups. The returned size is only guaranteed to be accurate if the File Storage is not opened and no other operation on the File Storage takes place at the same time.
ara::core::Result< std::uint64_t > GetCurrentFileStorageSize (const ara::core::InstanceSpecifier &fs) noexcept;Returns the space in bytes currently occupied by a Key-Value Storage. The returned size includes all metadata and the space used for redundancy and backups. The returned size is only guaranteed to be accurate if the Key-Value Storage is not opened and no other operation on the Key-Value Storage takes place at the same time.
ara::core::Result< std::uint64_t > GetCurrentKeyValueStorageSize (const ara::core::InstanceSpecifier &kvs) noexcept;Returns the global PerErrorDomain object.
constexpr const ara::core::ErrorDomain & GetPerDomain () noexcept;Creates an error code.
constexpr ara::core::ErrorCode MakeErrorCode (PerErrc code, ara::core::ErrorDomain::SupportDataType data) noexcept;Opens a File Storage. OpenFileStorage will fail with kResourceBusy when the File Storage is currently being modified by a call from another thread to UpdatePersistency, CleanUpPersistency, ResetPersistency, RecoverAllFiles, or ResetAllFiles. Because multiple threads can access the same File Storage concurrently, the File Storage might not be closed when the SharedHandle returned by this function goes out of scope. It will only be closed when all SharedHandles that refer to the same File Storage went out of scope.
ara::core::Result< SharedHandle< FileStorage > > OpenFileStorage (const ara::core::InstanceSpecifier &fs) noexcept;Opens a Key-Value Storage. OpenKeyValueStorage will fail with kResourceBusy when the Key-Value Storage is currently being modified by a call from another thread to UpdatePersistency, CleanUpPersistency, Reset Persistency, RecoverKeyValueStorage, or ResetKeyValueStorage. Because multiple threads can access the same Key-Value Storage concurrently, the Key-Value Storage might not be closed when the SharedHandle returned by this function goes out of scope. It will only be closed when all SharedHandles that refer to the same Key-Value Storage went out of scope.
ara::core::Result< SharedHandle< KeyValueStorage > > OpenKeyValue Storage (const ara::core::InstanceSpecifier &kvs) noexcept;Recovers a File Storage, including all files. RecoverAllFiles recovers a File Storage when the redundancy checks fail. It will fail with kResourceBusy when the File Storage is currently open, or when it is modified by a call from another thread to UpdatePersistency, CleanUpPersistency, ResetPersistency, RecoverAllFiles, or ResetAllFiles. This method does a best-effort recovery of all files. After recovery, files might show outdated or initial content, or might be lost.
ara::core::Result< void > RecoverAllFiles (const ara::core::Instance Specifier &fs) noexcept;Recovers a Key-ValueStorage. RecoverKeyValueStorage allows to recover a Key-Value Storage when the redundancy checks fail. It will fail with kResourceBusy when the Key-Value Storage is currently open, or when it is modified by a call from another thread to UpdatePersistency, CleanUpPersistency, Reset Persistency, RecoverKeyValueStorage, or ResetKeyValueStorage. This method does a best-effort recovery of all key-value pairs. After recovery, keys might show outdated or initial value, or might be lost.
ara::core::Result< void > RecoverKeyValueStorage (const ara::core::InstanceSpecifier &kvs) noexcept;Registers an application data update callback with Persistency. The provided callback function will be called by Persistency if an update of stored application data might be necessary. This decision is based on the contract versions. The contract version that last accessed Persistency is provided as an argument to the callback, as well as the ara::core::InstanceSpecifier referring to the updated Key- Value Storage or File Storage. Based on this information, the Adaptive Application can decide which updates are actually necessary, e.g. a migration from any older contract version could be supported, with different steps required for each of these. The provided function will be called from the context of ara::per::UpdatePersistency, ara::per::OpenKeyValueStorage, or ara::per::OpenFileStorage.
void RegisterApplicationDataUpdateCallback (std::function< void(const ara::core::InstanceSpecifier &storage, ara::core::String contract Version)> appDataUpdateCallback) noexcept;Registers a data update indication callback with Persistency. The provided callback function will be called by Persistency when an update of stored data happened. It will be called from the context of ara::per::UpdatePersistency, ara:: per::OpenKeyValueStorage, or ara::per::OpenFileStorage.
void RegisterDataUpdateIndication (std::function< void(const ara::core::InstanceSpecifier &updatedStorage, ara::core::StringView updatedElement)> dataUpdateIndication, ara::core::InstanceSpecifier monitoredStorage, ara::core::Vector< ara::core::String > monitored Elements) noexcept;Register a recovery reporting callback with Persistency. This callback can be used in safety-aware Adaptive Applications to detect actions of the Persistency that are related to the correctness of the persisted data and the reliability of the storage.
void RegisterRecoveryReportCallback (std::function< void(const ara::core::InstanceSpecifier &storage, ara::per::RecoveryReportKind recoveryReportKind, ara::core::Vector< ara::core::String > reported Elements, ara::core::Vector< std::uint8_t > reportedInstances)> recoveryReportCallback) noexcept;Re-reads the Target Configuration. This method can be used to prepare for updates of the Key-Value Storages and File Storages of Persistency after a new Target Configuration was installed by UCM while the Adaptive Application that uses Persistency is running. Storages are only updated after closing them, either when they are opened again or by an explicit call to ara:: per::UpdatePersistency.
ara::core::Result< void > ReloadPersistencyManifest () noexcept;Resets a File Storage, including all files. ResetAllFiles resets a File Storage to the initial state, containing only the files which were deployed from the Target Configuration, with their initial content. Afterwards, the File Storage will appear as if it was newly installed from the current Target Configuration. It will fail with kResourceBusy when the File Storage is currently open, or when it is modified by a call from another thread to UpdatePersistency, CleanUpPersistency, ResetPersistency, RecoverAllFiles, or ResetAllFiles.
ara::core::Result< void > ResetAllFiles (const ara::core::Instance Specifier &fs) noexcept;Resets a Key-Value Storage to the initial state. ResetKeyValueStorage allows to reset a Key-Value Storage to the initial state, containing only key-value pairs which were deployed from the Target Configuration, with their initial values. Afterwards, the Key-Value Storage will appear as if it was newly installed from the current Target Configuration. It will fail with kResourceBusy when the Key-Value Storage is currently open, or when it is modified by a call from another thread to UpdatePersistency, CleanUpPersistency, Reset Persistency, RecoverKeyValueStorage, or ResetKeyValueStorage.
ara::core::Result< void > ResetKeyValueStorage (const ara::core::InstanceSpecifier &kvs) noexcept;Resets all Key-Value Storages and File Storages by entirely removing their content. The Key-Value Storages and File Storages will be re-created when ara::per:: OpenFileStorage or ara::per::OpenKeyValueStorage is called next time.
ara::core::Result< void > ResetPersistency () noexcept;Updates all Persistency Key-Value Storages and File Storages after a new Target Configuration was installed. This method can be used to update the persistent data of the Adaptive Application during verification phase.
ara::core::Result< void > UpdatePersistency () noexcept;This enumeration describes how and when a file was created.
enum class FileCreationState : std::uint32_t {...};This enumeration describes how and when a file was last modified.
enum class FileModificationState : std::uint32_t {...};This enumeration defines how a file shall be opened. The values can be combined (using | and |=) as long as they do not contradict each other.
enum class OpenMode : std::uint32_t {...};Specification of origin used in MovePosition.
enum class Origin : std::uint32_t {...};Defines the errors for Persistency. The enumeration values 0 - 255 are reserved for AUTOSAR assigned errors, the stack provider is free to define additional errors starting from 256.
enum class PerErrc : ara::core::ErrorDomain::CodeType {...};Defines the reported recovery actions.
enum class RecoveryReportKind : std::uint32_t {...};命名空间
- ara::per 11 Klassen, 20 freie Funktionen
模块的 UML 类图
Abgerundete Rahmen = Namespaces; hohle Dreieckspfeile = Vererbung (zeigt zur Basisklasse); graue Boxen = modulfremde bzw. externe Basisklassen. Klicken öffnet die Klassenseite.
gemini-3.8-flash-low· 2026-10-13 · 德文原文