Обеспечивает персистентное хранение и управление данными приложений через хранилища «ключ-значение» и файловые хранилища.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: 9cb072b2740aПроисхождениеОткрытые вопросы (1)
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Обеспечивает персистентное хранение и управление данными приложений через хранилища «ключ-значение» и файловые хранилища.
Пространство имен ara::per предоставляет интерфейсы для персистентного хранения данных, предоставляя адаптивным приложениям доступ к файловым областям хранения и хранилищам типа «ключ-значение» через идентификаторы экземпляров ([SWS_PER_00052], [SWS_PER_00116]). Приложения управляют открытыми хранилищами через разделяемые дескрипторы, выполняют скоординированные обновления при изменениях манифеста и могут восстанавливать несогласованные данные с помощью механизмов восстановления ([SWS_PER_00333], [SWS_PER_00357]). В то время как доступ к хранилищу осуществляется параллельно через дескрипторы, административные операции, такие как обновления или сбросы хранилища, требуют отсутствия конкурирующих обращений ([SWS_PER_00311]).
Контекст
Пространство имен ara::per предоставляет интерфейсы функционального кластера персистентности для AUTOSAR Adaptive Platform. Его основная ответственность заключается в долговременном хранении данных приложений, сохраняющемся между перезапусками системы и жизненными циклами процессов. Модуль различает две базовые парадигмы хранения: KeyValueStorage для структурированных пар «ключ-значение» и FileStorage для файлового доступа к хранилищу. Адаптивные приложения обращаются к этим ресурсам через сконфигурированные прототипы портов с помощью ara::core::InstanceSpecifier ([SWS_PER_00052], [SWS_PER_00116]).
Важными партнерами пространства имен по взаимодействию являются Update and Configuration Management (UCM), способный предоставлять обновленные целевые конфигурации (Target Configuration) во время выполнения ([SWS_PER_00576], [SWS_PER_00577]), а также физический носитель данных, на котором ara::per гарантирует целостность, избыточность и безопасность данных ([SWS_PER_00311]).
Доступ к объектам хранилища регулируется через абстракции дескрипторов. Открытие хранилища через OpenKeyValueStorage или OpenFileStorage создает SharedHandle ([SWS_PER_00052], [SWS_PER_00116]). Поскольку несколько потоков могут одновременно обращаться к одному и тому же хранилищу, физический ресурс не обязательно закрывается при выходе отдельного SharedHandle из области видимости; закрытие происходит только тогда, когда удалены все ссылающиеся экземпляры SharedHandle ([SWS_PER_00052], [SWS_PER_00116]).
Для файлов внутри FileStorage детально отслеживаются состояния создания и модификации. Перечисление FileCreationState отображает, был ли файл создан при установке (kCreatedDuringInstallation), во время обновления (kCreatedDuringUpdate), в результате сброса (kCreatedDuringReset), вследствие восстановления (kCreatedDuringRecovery) или самим приложением (kCreatedByApplication) ([SWS_PER_00435]). Аналогично FileModificationState отражает, когда и в результате какой операции файл был изменен в последний раз ([SWS_PER_00436]).
Для управления исходными состояниями пространство имен предоставляет функции сброса: ResetKeyValueStorage ([SWS_PER_00334]) и ResetAllFiles ([SWS_PER_00336]) возвращают отдельные хранилища к значениям, изначально определенным в манифесте. В отличие от этого глобальная операция ResetPersistency ([SWS_PER_00358]) полностью очищает все хранилища «ключ-значение» и файловые хранилища; их повторное создание происходит при следующем вызове OpenFileStorage или OpenKeyValueStorage.
Типичный процесс работы приложения включает проверку наличия обновлений конфигурации, применение миграций данных и последующий доступ к хранилищу:
До или во время штатного режима работы приложение проверяет с помощью CheckForManifestUpdate, установил ли UCM новую целевую конфигурацию ([SWS_PER_00576]). Если это так, новый манифест считывается через ReloadPersistencyManifest ([SWS_PER_00577]). Во время последующей фазы верификации приложение инициирует UpdatePersistency ([SWS_PER_00357]). Для управления версионными миграциями данных приложение предварительно регистрирует функцию обратного вызова через RegisterApplicationDataUpdateCallback, которая получает уведомления об устаревших версиях контракта и выполняет собственные шаги миграции приложения ([SWS_PER_00356]). Дополнительно изменения элементов могут отслеживаться с помощью RegisterDataUpdateIndication ([SWS_PER_00578]). После завершения обновления CleanUpPersistency удаляет устаревшие резервные копии и избыточные старые данные ([SWS_PER_00567]).
Для штатного доступа приложение открывает целевой ресурс через OpenKeyValueStorage ([SWS_PER_00052]) или OpenFileStorage ([SWS_PER_00116]). Обращения к файлам в FileStorage управляются битовыми масками перечисления OpenMode (например, kAtTheBeginning, kAtTheEnd, kTruncate, kAppend), комбинируемыми через операторы operator| ([SWS_PER_00144]) и operator|= ([SWS_PER_00434]) ([SWS_PER_00147]). Позиционирование выполняется относительно Origin (kBeginning, kCurrent, kEnd) ([SWS_PER_00146]). Текущий занятый размер хранилища может быть определен во время выполнения через GetCurrentKeyValueStorageSize ([SWS_PER_00405]) и GetCurrentFileStorageSize ([SWS_PER_00406]).
Ошибки в пространстве имен стандартизированно сигнализируются через перечисление PerErrc ([SWS_PER_00311]) в сочетании с PerErrorDomain ([SWS_PER_00352]) и MakeErrorCode ([SWS_PER_00351]). Объявленный класс PerException, вероятно, служит типом C++-исключений для окружений, в которых ошибки обрабатываются не через ara::core::Result, а с помощью исключений (интерпретация). Вопрос Q-263982a4a4dae284 (открытый)
Ключевые сценарии ошибок включают:
Ошибки конфигурации и адресации: если переданный InstanceSpecifier не соответствует ни одному сконфигурированному в модели интерфейсу порта, открытие завершается сбоем с PerErrc::kStorageNotFound ([SWS_PER_00052], [SWS_PER_00116], [SWS_PER_00311]). Обращения к несуществующим файлам порождают PerErrc::kFileNotFound ([SWS_PER_00311]).
Потеря целостности и восстановление: при структурных повреждениях (PerErrc::kIntegrityCorrupted) или неудавшихся проверках избыточности (PerErrc::kValidationFailed) ara::per обеспечивает восстановление по мере возможностей (best-effort) через RecoverKeyValueStorage ([SWS_PER_00333]) или RecoverAllFiles ([SWS_PER_00335]). Через RegisterRecoveryReportCallback ([SWS_PER_00433]) приложения, критичные к безопасности, могут автоматически протоколировать корректирующие меры на основе RecoveryReportKind (например, kKeyValueStorageRecovered, kFileRecovered) ([SWS_PER_00432]).
Пределы памяти и физические ошибки: при превышении квот или физической емкости сообщается о PerErrc::kOutOfStorageSpace, PerErrc::kQuotaExceeded или PerErrc::kTooManyFiles ([SWS_PER_00311]). Аппаратные сбои или ошибки файловой системы приводят к PerErrc::kPhysicalStorageFailure ([SWS_PER_00311]).
Безопасность и режимы доступа: в случае сбоя криптографических проверок или вычислений модуль возвращает PerErrc::kEncryptionFailed или PerErrc::kAuthenticationFailed ([SWS_PER_00311]). Попытки записи в защищенные от записи области хранилища отклоняются с PerErrc::kIllegalWriteAccess ([SWS_PER_00311]).
Настоящее руководство основано исключительно на спецификации AUTOSAR Adaptive R25-11.
KI-gestützte Gruppierung auf Basis der Records und Spezifikationsauszüge; keine Gliederung aus der AUTOSAR-Spezifikation.
Диаграмма классов
Abgerundete Rahmen = Namespace- bzw. Klassen-Scopes; hohle Dreieckspfeile = Vererbung (zeigt zur Basisklasse); graue Boxen = namespace-fremde bzw. externe Basisklassen. Klicken öffnet die jeweilige Klassen- bzw. cppreference-Seite.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
=1 The requested Key-Value Storage or File Storage is not configured in the AUTOSAR model.
kKeyNotFound
=2 The provided key cannot be not found in the Key-Value Storage.
kIllegalWriteAccess
=3 The operation could not be performed because the accessed Key-Value Storage or File Storage is configured as read-only or write-only-once.
kPhysicalStorageFailure
=4 An error occurred when accessing the physical storage, e.g. because of a corrupted file system or corrupted hardware, or because of insufficient access rights.
kIntegrityCorrupted
=5 The structural integrity of the Key-Value Storage or File Storage could not be established. This can happen when the internal structure of a Key-Value Storage or the metadata of a File Storage is corrupted.
kValidationFailed
=6 The validation of redundancy measures failed for a single key-value pair, for the whole Key-Value Storage, for a single file, or for the whole File Storage.
kEncryptionFailed
=7 The encryption or decryption failed for a single key-value pair, for the whole Key-Value Storage, for a single file, or for the whole File Storage.
kDataTypeMismatch
=8 The provided data type does not match the stored data type.
kInitValueNotAvailable
=9 The operation could not be performed because no initial value is available.
kResourceBusy
= 10 The operation could not be performed because the resource is currently busy.
kOutOfStorageSpace
= 12 The physical storage space was exceeded.
kFileNotFound
= 13 The requested file name cannot be not found in the File Storage.
kInvalidPosition
= 15 SetPosition tried to move to a position that is not reachable (i.e. which is smaller than zero or greater than the current size of the file).
kEof
= 16 The Persistency user tried to read from the end of the file or from an empty file.
kInvalidOpenMode
= 17 Opening a file failed because the requested combination of Open Modes is invalid.
kInvalidSize
= 18 SetFileSize tried to set a new size that is bigger than the current file size.
kTooManyFiles
= 19 The maximum number of files was exceeded.
kQuotaExceeded
= 20 The allocated storage quota was exceeded.
kAuthenticationFailed
= 21 Calculating or checking of the MAC failed for a single key-value pair, for the whole Key-Value Storage, for a single file, or for the whole File Storage.
Request a governed re-review of this record. The record is not changed immediately.
=1 A Key-Value Storage was corrupted, an insufficient number of valid copies existed. storage contains the short-name path of the Key-Value Storage, reportedElements is empty, reportedInstances contains the indices of the affected Key-Value Storage copies.
kKeyValueStorageRecovered
=2 A Key-Value Storage was corrupted, but a sufficient number of valid copies existed. storage contains the short-name path of the Key-Value Storage, reportedElements is empty, reportedInstances contains the indices of the affected Key-Value Storage copies.
kKeyRecoveryFailed
=3 A set of key-value pairs was corrupted, an insufficient number of valid copies existed. storage contains the short-name path of the Key-Value Storage, reportedElements contains the list of affected keys, reportedInstances contains the indices of the affected Key-Value Storage or key-value pair copies. In general, the nth key in reportedElements corresponds to the nth index in reported Instances, i.e. a key may be reported several times if several copies are broken. In case only one key-value pair is affected, reported Elements may be provided containing just this key.
kKeyRecovered
=4 A set of key-value pairs was corrupted, but a sufficient number of valid copies existed. storage contains the short-name path of the Key-Value Storage, reportedElements contains the list of affected keys, reportedInstances contains the indices of the affected Key-Value Storage or key-value pair copies. In general, the nth key in reportedElements corresponds to the nth index in reported Instances, i.e. a key may be reported several times if several copies are broken. In case only one key-value pair is affected, reported Elements may be provided containing just this key.
kFileStorageRecoveryFailed
=5 A File Storage was corrupted, an insufficient number of valid copies existed. storage contains the short-name path of the File Storage, reportedElements is empty, reportedInstances contains the indices of the affected File Storage copies.
kFileStorageRecovered
=6 A File Storage was corrupted, but a sufficient number of valid copies existed. storage contains the short-name path of the File Storage, reportedElements is empty, reportedInstances contains the indices of the affected File Storage copies.
kFileRecoveryFailed
=7 A set of files was corrupted, an insufficient number of valid copies existed. storage contains the short-name path of the File Storage, reportedElements contains the list of affected file names, reported Instances contains the indices of the affected File Storage or file copies. In general, the nth file name in reportedElements corresponds to the nth index in reportedInstances, i.e. a file name may be reported several times if several copies are broken. In case only one file is affected, reportedElements may be provided containing just this file name.
kFileRecovered
=8 A set of files was corrupted, but a sufficient number of valid copies existed. storage contains the short-name path of the File Storage, reportedElements contains the list of affected file names, reported Instances contains the indices of the affected File Storage or file copies. In general, the nth file name in reportedElements corresponds to the nth index in reportedInstances, i.e. a file name may be reported several times if several copies are broken. In case only one file is affected, reportedElements may be provided containing just this file name.
Request a governed re-review of this record. The record is not changed immediately.
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.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: b1f49db8b33dПроисхождение
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Использование
Синхронная функция CheckForManifestUpdate из заголовочного файла ara/per/update.h проверяет в пространстве имен ara::per наличие обновлений Persistency Target Configuration [SWS_PER_00576]. Она служит для обнаружения изменений конфигурации, примененных Update and Configuration Management (UCM) во время работы адаптивного приложения, использующего Persistency [SWS_PER_00576]. Функция не принимает параметров и возвращает ara::core::Result<bool>: true, если конфигурация была обновлена с момента последнего считывания, или false, если она осталась без изменений [SWS_PER_00576].
Обработка ошибок и параллелизм
Функция объявлена как noexcept и является безопасной по отношению к исключениям (exception safe), но не является потокобезопасной (not thread-safe) [SWS_PER_00576]. В случае ошибки результат содержит либо ошибки поставщика, либо один из следующих кодов ошибок [SWS_PER_00576]:
kPhysicalStorageFailure: возникает, если во время проверки происходит сбой доступа к физической памяти [SWS_PER_00576].
kIntegrityCorrupted: возникает, если сохраненные данные не могут быть прочитаны из-за нарушения структурной целостности [SWS_PER_00576].
Взаимодействие
Если обнаружено обновление (возвращаемое значение true), приложение должно затем вызвать ara::per::ReloadPersistencyManifest, чтобы фактически заново считать измененную Target Configuration [SWS_PER_00576].
Этот текст сгенерирован ИИ и служит ориентиром на основе спецификации.
A Result containing true if the Target Configuration was updated or false if it is unchanged since the last time the Target Configuration was read. In case of an error, it contains any of the errors defined below, or a vendor specific error.
Fehler
Fehlercode
Beschreibung
kPhysicalStorage-Failure
rollback_semantics Returned if access to the physical storage fails during the checking operation.
kIntegrityCor-rupted
rollback_semantics Returned if stored data cannot be read because the structural integrity is corrupted.
Request a governed re-review of this record. The record is not changed immediately.
Removes backup data and other unused data of all Persistency Key-Value Storages and File Storages.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: ce1bea3039deПроисхождение
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Использование
Синхронная функция CleanUpPersistency из ara/per/update.h служит для удаления резервных данных (Backup Data) и других неиспользуемых данных во всех Key-Value- и File-Storage экземпляра [SWS_PER_00567]. Она не принимает параметров и возвращает результат через тип возвращаемого значения ara::core::Result<void>[SWS_PER_00567].
Параллелизм и ограничения
Функция не является потокобезопасной (not thread-safe) и требует монопольного доступа ко всем ресурсам хранилища [SWS_PER_00567]. Если ещё открыт ara::per::SharedHandle какого-либо Key-Value- или File-Storage, вызов завершается ошибкой с kResourceBusy[SWS_PER_00567]. Аналогично, параллельно выполняемые операции, такие как UpdatePersistency, ResetPersistency, RecoverKeyValueStorage, ResetKeyValueStorage, RecoverAllFiles или ResetAllFiles, приводят к коду ошибки kResourceBusy[SWS_PER_00567].
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.
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.
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.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: 14078ca86bfbПроисхождение
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Синхронная функция ara::per::OpenFileStorage открывает файловое хранилище для персистентных данных и предоставляет его через разделяемый дескриптор доступа [SWS_PER_00116]. В качестве параметра она ожидает ссылку на ara::core::InstanceSpecifier, указывающий путь shortName прототипа порта (PortPrototype), типизированного с помощью PersistencyFileStorageInterface. Возвращаемое значение представляет собой ara::core::Result<ara::core::SharedHandle<FileStorage>>[SWS_PER_00116].
В отношении параллелизма функция специфицирована как thread-safe и exception-safe [SWS_PER_00116]. Поскольку несколько потоков могут параллельно обращаться к одному и тому же экземпляру файлового хранилища, физическое хранилище не обязательно закрывается, когда отдельный SharedHandle выходит из области видимости. Закрытие происходит только тогда, когда все ссылающиеся дескрипторы вышли из области видимости (out-of-scope) [SWS_PER_00116].
В случае ошибки Result содержит коды ошибок перечисления PerErrc или ошибки, специфичные для производителя [SWS_PER_00116]:
PerErrc::kResourceBusy: возвращается, если одновременно выполняются такие административные операции, как CleanUpPersistency, ResetPersistency, RecoverAllFiles или ResetAllFiles. Пока активна UpdatePersistency, эта ошибка возникает, если вызов происходит вне зарегистрированного через RegisterApplicationDataUpdateCallback обратного вызова или с другим идентификатором [SWS_PER_00116], [SWS_PER_00356].
Ошибки конфигурации и доступа: kStorageNotFound при нескомплектованном (несконфигурированном) экземпляре, kPhysicalStorageFailure при ошибках физического хранилища, а также kIntegrityCorrupted, kValidationFailed, kEncryptionFailed и kAuthenticationFailed при проблемах целостности, проверки или расшифрования [SWS_PER_00116].
Ограничения ёмкости при неявных обновлениях: kOutOfStorageSpace, kTooManyFiles или kQuotaExceeded[SWS_PER_00116].
Во взаимодействии с модулем предварительный сброс с помощью ResetPersistency приводит к тому, что удалённые файловые хранилища создаются заново при следующем вызове OpenFileStorage[SWS_PER_00358]. Если во время открытия данные обновляются, обратный вызов индикации (indication callback), зарегистрированный через RegisterDataUpdateIndication, вызывается непосредственно в контексте OpenFileStorage[SWS_PER_00578].
Этот текст был сгенерирован ИИ на основе спецификации AUTOSAR Adaptive R25-11.
Руководство разработчика реализации в подготовке (сложность I1)
rollback_semantics Returned if CleanUpPersistency, or ResetPersistency is currently being executed, or if RecoverAllFiles or ResetAllFiles is currently being executed for the same File Storage. Also, while Update Persistency is currently being executed, this error is returned when OpenFileStorage is called outside of the callback registered via RegisterApplicationDataUpdateCallback, or if the used Instance Specifier differs from the one provided by the callback.
no_rollback_semantics Returned if the available physical storage space is insufficient for the files that are added/updated during an implicit update of the File Storage.
rollback_semantics Returned if the files that are added/updated during an implicit update of the File Storage would exceed the configured maximum AllowedSize.
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.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: d24427922381Происхождение
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Использование и жизненный цикл
Синхронная функция OpenKeyValueStorage открывает хранилище «ключ — значение» и специфицирована как thread-safe, а также noexcept[SWS_PER_00052]. В качестве параметра kvs передаётся ara::core::InstanceSpecifier, ссылающийся на путь PortPrototype, типизированного с помощью PersistencyKeyValueStorageInterface. Возврат осуществляется в виде ara::core::Result<SharedHandle<KeyValueStorage>>. Поскольку несколько потоков могут конкурентно открывать одно и то же хранилище, Persistency закрывает физическое хранилище только тогда, когда все ссылающиеся экземпляры SharedHandle вышли из своей области видимости [SWS_PER_00052].
Обработка ошибок и параллелизм
В случае ошибки Result возвращает специфические коды ошибок домена ошибок Persistency [SWS_PER_00052]:
PerErrc::kStorageNotFound: идентификатор не соответствует ни одному сконфигурированному интерфейсу Executable.
PerErrc::kResourceBusy: возникает, если для этого хранилища конкурентно выполняются CleanUpPersistency, ResetPersistency[SWS_PER_00358], RecoverKeyValueStorage или ResetKeyValueStorage. Во время UpdatePersistency вызов допустим только внутри обратного вызова, зарегистрированного через RegisterApplicationDataUpdateCallback, с переданным там идентификатором экземпляра [SWS_PER_00356].
PerErrc::kPhysicalStorageFailure, PerErrc::kIntegrityCorrupted, PerErrc::kValidationFailed, PerErrc::kEncryptionFailed и PerErrc::kAuthenticationFailed при дефектах, ошибках валидации или криптографических ошибках.
PerErrc::kOutOfStorageSpace и PerErrc::kQuotaExceeded при недостатке места в хранилище или превышении квоты во время неявного обновления.
Взаимодействие
Если все данные ранее были удалены с помощью ResetPersistency, хранилище автоматически создаётся заново при следующем вызове OpenKeyValueStorage[SWS_PER_00358]. После открытия несохранённые модификации могут быть сброшены на состояние на момент открытия с помощью DiscardPendingChanges[SWS_PER_00365]. Кроме того, открытие может инициировать выполнение обратных вызовов, зарегистрированных через RegisterDataUpdateIndication[SWS_PER_00578].
Это указание по использованию было сгенерировано автоматически на основе требований спецификации.
Руководство разработчика реализации в подготовке (сложность I2)
A Result containing a SharedHandle for the KeyValueStorage. In case of an error, it contains any of the errors defined below, or a vendor specific error.
Fehler
Fehlercode
Beschreibung
Found
Returned if the passed InstanceSpecifier does not match any PersistencyKeyValueStorageInterface configured for this Executable.
rollback_semantics Returned if CleanUpPersistency, or ResetPersistency is currently being executed, or if RecoverKeyValueStorage or ResetKeyValue Storage is currently being executed for the same Key-Value Storage. Also, while UpdatePersistency is currently being executed, this error is returned when OpenKeyValueStorage is called outside of the callback registered via RegisterApplicationDataUpdate Callback, or if the used InstanceSpecifier differs from the one provided by the callback.
no_rollback_semantics Returned if the available physical storage space is insufficient for the values that are added/updated during an implicit update of the Key-Value Storage.
rollback_semantics Returned if the values that are added/updated during an implicit update of the Key-Value Storage would exceed the configured maximumAllowedSize.
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.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: ca84cc440ba3Происхождение
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Функция RecoverAllFiles выполняет восстановление файлового хранилища (File Storage), включая все хранящиеся в нём файлы, в случае сбоя проверок избыточности [SWS_PER_00335]. Вызов происходит синхронно с указанием InstanceSpecifier для сконфигурированного прототипа порта и возвращает ara::core::Result<void>[SWS_PER_00335].
Восстановление работает по принципу наилучших усилий: после завершения файлы могут содержать устаревшее содержимое, быть сброшены в исходное состояние или полностью утеряны [SWS_PER_00335]. В случае сбоя доступа к носителю данных (PerErrc::kPhysicalStorageFailure) или нехватки дискового пространства (PerErrc::kOutOfStorageSpace) гарантия отката отсутствует [SWS_PER_00335]. При возникновении ошибки во время шифрования (PerErrc::kEncryptionFailed), проверки целостности (PerErrc::kAuthenticationFailed) или ограничения размера хранилища (PerErrc::kQuotaExceeded) применяется семантика отката [SWS_PER_00335]. Если идентификатор не соответствует ни одному сконфигурированному интерфейсу, это приводит к PerErrc::kStorageNotFound[SWS_PER_00335].
Хотя функция является потокобезопасной, выполнение завершается сбоем с PerErrc::kResourceBusy, пока хранилище открыто или существует активный разделяемый дескриптор [SWS_PER_00335], [SWS_PER_00116]. Также параллельные выполнения ResetAllFiles[SWS_PER_00336] для того же хранилища, а также глобальные операции обновления UpdatePersistency[SWS_PER_00357], ResetPersistency[SWS_PER_00358] и CleanUpPersistency[SWS_PER_00567] блокируют вызов [SWS_PER_00335].
Это указание по использованию было создано ИИ на основе спецификаций.
Руководство разработчика реализации в подготовке (сложность I2)
rollback_semantics Returned if UpdatePersistency, CleanUpPersistency, or Reset Persistency is currently being executed, or if ResetAllFiles is currently being executed for the same File Storage, or a Shared Handle of the same File Storage is currently in use.
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.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: ba269bfce693Происхождение
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Синхронная функция RecoverKeyValueStorage в пространстве имён ara::per служит для восстановления хранилища пар «ключ-значение» после сбоя проверок избыточности ([SWS_PER_00333]). В качестве параметра kvs передаётся ara::core::InstanceSpecifier, который ссылается на путь ShortName соответствующего PortPrototype ([SWS_PER_00333]). Восстановление выполняется по принципу «best effort» (максимальных усилий); после завершения процесса ключи могут содержать устаревшие или начальные значения либо быть полностью утрачены ([SWS_PER_00333]).
Хотя функция специфицирована как потокобезопасная, выполнение завершается сбоем с кодом ошибки PerErrc::kResourceBusy, если соответствующее хранилище «ключ — значение» открыто — то есть существует как минимум один активный SharedHandle ([SWS_PER_00052], [SWS_PER_00333]). Та же ошибка возникает, если другие потоки одновременно вызывают модифицирующие функции: UpdatePersistency ([SWS_PER_00357]), CleanUpPersistency ([SWS_PER_00567]), ResetPersistency ([SWS_PER_00358]) или ResetKeyValueStorage ([SWS_PER_00334]). Во время восстановления вызов OpenKeyValueStorage также завершается сбоем с kResourceBusy ([SWS_PER_00052]).
Результат возвращается синхронно как ara::core::Result<void>. Помимо PerErrc::kResourceBusy определены следующие специфические ошибки ([SWS_PER_00333]):
PerErrc::kStorageNotFound: переданный идентификатор не соответствует ни одному сконфигурированному интерфейсу.
PerErrc::kPhysicalStorageFailure: сбой доступа к физической памяти (без семантики отката).
PerErrc::kOutOfStorageSpace: недостаточно физического пространства в памяти для восстановленных данных (без семантики отката).
PerErrc::kQuotaExceeded: превышение сконфигурированной максимальной длины (maximumAllowedSize).
PerErrc::kEncryptionFailed и PerErrc::kAuthenticationFailed: ошибка шифрования или вычисления MAC.
Этот текст был создан ИИ на основе спецификации AUTOSAR.
Руководство разработчика реализации в подготовке (сложность I2)
rollback_semantics Returned if UpdatePersistency, CleanUpPersistency, or Reset Persistency is currently being executed, or if ResetKeyValue Storage is currently being executed for the same Key-Value Storage, or a SharedHandle of the same Key-Value Storage is currently in use.
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.
The callback function to be called by Persistency after an update of persistent data took place. The function will be called with the shortName path of an updated Key-Value Storage or File Storage, and with the contract version with which the Persistency was last accessed.
Rückgabewert
Typ
Beschreibung
None
Request a governed re-review of this record. The record is not changed immediately.
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.
The callback function to be called by Persistency after an update of persistent data took place. The function will be called with the shortName path of an updated Key-Value Storage or File Storage, and with the the updated elements of the storage.
monitoredStorage
A Key-Value Storage or File Storage for which updates shall be reported.
monitoredElements
A set of elements for which updates shall be reported.
Rückgabewert
Typ
Beschreibung
None
Request a governed re-review of this record. The record is not changed immediately.
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.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: 5828fc3d3f00ПроисхождениеОткрытые вопросы (1)
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Функция RegisterRecoveryReportCallback в пространстве имен ara::per ([SWS_PER_00433]) служит для регистрации процедуры обратного вызова в компоненте Persistency. Она используется в ориентированных на безопасность Adaptive Applications для обнаружения корректирующих мер Persistency относительно корректности сохраненных данных и надежности памяти [SWS_PER_00433].
Параметры и семантика вызова
В качестве параметра передается recoveryReportCallback, std::function, вызываемый Persistency при успешном исправлении ошибок в сохраненных данных с использованием доступной избыточности [SWS_PER_00433]. При этом обратному вызову передается следующая контекстная информация [SWS_PER_00433]:
storage: путь (shortName) затронутого Key-Value Storage или File Storage в виде ara::core::InstanceSpecifier.
recoveryReportKind: тип отчета о восстановлении (ara::per::RecoveryReportKind).
reportedElements: вектор идентификаторов затронутых элементов (ara::core::Vector<ara::core::String>).
Функция не возвращает значения и объявлена как noexcept; она считается безопасной относительно исключений (exception safe) [SWS_PER_00433]. Собственные коды ошибок отсутствуют [SWS_PER_00433]. Что касается потокобезопасности, интерфейс классифицирован как not thread-safe[SWS_PER_00433]. Поэтому вызов, как правило, должен выполняться на этапе инициализации приложения до запуска параллельных обращений к памяти. Вопрос Q-e5b93ea58fb56a1c (открытый)
Данное указание по использованию создано ИИ и основано на спецификациях платформы AUTOSAR.
The callback function to be called by Persistency to report errors in the stored data that were corrected using the available redundancy. The function will be called with the shortName path of the affected Key-Value Storage or File Storage in storage and information on what has been corrected, placed in the parameters recoveryReport Kind, reportedElements, and reportedInstances.
Rückgabewert
Typ
Beschreibung
None
Request a governed re-review of this record. The record is not changed immediately.
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.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: 19920ccb9cf9ПроисхождениеОткрытые вопросы (1)
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Синхронная функция ReloadPersistencyManifest из пространства имен ara::per (объявленная в #include "ara/per/update.h") повторно считывает целевую конфигурацию (Target Configuration) Persistency [SWS_PER_00577]. Она служит для подготовки обновлений хранилищ ключ-значение (Key-Value Storages) и файловых хранилищ (File Storages) после того, как Update and Config Management (UCM) установил новую целевую конфигурацию во время выполнения Adaptive Application [SWS_PER_00577].
Как правило, приложение предварительно проверяет с помощью CheckForManifestUpdate[SWS_PER_00576] наличие обновления конфигурации и затем вызывает ReloadPersistencyManifest[SWS_PER_00576]. Однако повторное считывание пока не обновляет персистентные хранилища немедленно: хранилища обновляются только после их закрытия — либо при повторном открытии, либо через явный вызов ara::per::UpdatePersistency[SWS_PER_00577]. Интерпретация: уже открытые области хранения, вероятно, не закрываются автоматически при данном вызове, поэтому приложению необходимо закрыть их самостоятельно или обновить явно. Вопрос Q-16f9dae418feb3fa (открытый)
Функция не принимает параметров и возвращает ara::core::Result<void>[SWS_PER_00577]. В случае ошибки результат содержит ошибки поставщика или один из следующих кодов ошибок с семантикой отката [SWS_PER_00577]:
kPhysicalStorageFailure: возникает, если во время операции чтения происходит сбой доступа к физической памяти [SWS_PER_00577].
kIntegrityCorrupted: возникает, если сохраненные данные не могут быть прочитаны из-за нарушения структурной целостности [SWS_PER_00577].
С точки зрения параллелизма функция специфицирована как непотокобезопасная (not thread-safe), однако объявлена как безопасная по отношению к исключениям (exception safe) и noexcept[SWS_PER_00577]. Поэтому параллельные вызовы должны синхронизироваться на стороне приложения.
Данное указание по использованию было создано ИИ на основе спецификации.
Руководство разработчика реализации в подготовке (сложность I1)
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.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: f645139d391cПроисхождение
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Функция ResetAllFiles синхронно возвращает File Storage к его исходному состоянию поставки в соответствии с текущей Target Configuration[SWS_PER_00336]. После успешного выполнения хранилище содержит исключительно определённые там файлы с их первоначальным содержимым, как если бы оно было установлено заново [SWS_PER_00336].
Использование и параллелизм: Через параметр fs передаётся идентификатор экземпляра PortPrototype, типизированного через PersistencyFileStorageInterface[SWS_PER_00336]. Хотя функция специфицирована как thread-safe и exception safe, она требует эксклюзивного доступа к хранилищу: если хранилище в данный момент открыто (например, через активный SharedHandle из OpenFileStorage[SWS_PER_00116]) или параллельно модифицируется посредством UpdatePersistency[SWS_PER_00357], CleanUpPersistency[SWS_PER_00567], ResetPersistency[SWS_PER_00358], RecoverAllFiles[SWS_PER_00335] либо другого вызова ResetAllFiles, выполнение завершается ошибкой [SWS_PER_00336].
Обработка ошибок: Функция возвращает ara::core::Result<void>[SWS_PER_00336]. Возможные коды ошибок из PerErrc:
kResourceBusy: файловое хранилище открыто или модифицируется параллельно (семантика отката) [SWS_PER_00336].
kStorageNotFound: идентификатор не соответствует ни одному интерфейсу, сконфигурированному для Executable [SWS_PER_00336].
kPhysicalStorageFailure или kOutOfStorageSpace: физическая ошибка хранилища или недостаточно места в хранилище (без семантики отката) [SWS_PER_00336].
kEncryptionFailed или kAuthenticationFailed: ошибка при шифровании или вычислении MAC (семантика отката) [SWS_PER_00336].
Взаимодействие: После сброса восстановленные файлы при запросах состояния имеют статус FileCreationState::kCreatedDuringReset[SWS_PER_00435], а также FileModificationState::kModifiedDuringReset[SWS_PER_00436].
Данное указание по использованию было сгенерировано ИИ на основе спецификации AUTOSAR R25-11.
Руководство разработчика реализации в подготовке (сложность I2)
rollback_semantics Returned if UpdatePersistency, CleanUpPersistency, or Reset Persistency is currently being executed, or if RecoverAllFiles is currently being executed for the same File Storage, or a Shared Handle of the same File Storage is currently in use.
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.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: 48697319880fПроисхождение
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Синхронная функция ResetKeyValueStorage сбрасывает конкретное хранилище «ключ — значение» в его начальное состояние [SWS_PER_00334]. После успешного выполнения хранилище содержит исключительно те пары «ключ — значение» с их начальными значениями, которые были предоставлены через Target Configuration; после этого хранилище ведет себя так, как будто оно было заново установлено из текущей конфигурации [SWS_PER_00334]. В качестве параметра передается путь kvs как ara::core::InstanceSpecifier, который ссылается на PortPrototype сконфигурированного PersistencyKeyValueStorageInterface[SWS_PER_00334].
Функция специфицирована как thread-safe и exception safe, однако подчиняется строгим условиям параллелизма относительно открытых хранилищ и глобальных операций персистентности [SWS_PER_00334]:
Вызов завершается сбоем с PerErrc::kResourceBusy, если соответствующий Key-Value-Storage в данный момент открыт (то есть еще существует SharedHandle, см. [SWS_PER_00052]) или параллельно выполняется восстановление с помощью RecoverKeyValueStorage[SWS_PER_00333] на том же хранилище [SWS_PER_00334].
К kResourceBusy также приводит параллельное выполнение глобальных операций UpdatePersistency[SWS_PER_00357], CleanUpPersistency[SWS_PER_00567], ResetPersistency[SWS_PER_00358] или параллельный вызов ResetKeyValueStorage в другом потоке [SWS_PER_00334].
В качестве результата функция возвращает ara::core::Result<void>[SWS_PER_00334]. В случае ошибки, помимо kResourceBusy, возникают следующие специфические коды ошибок: PerErrc::kStorageNotFound (недопустимый InstanceSpecifier), PerErrc::kPhysicalStorageFailure (ошибка доступа к носителю данных, без семантики отката), PerErrc::kOutOfStorageSpace (недостаточно места в памяти для начальных значений, без семантики отката), PerErrc::kEncryptionFailed (ошибка шифрования), а также PerErrc::kAuthenticationFailed (ошибка при вычислении MAC) [SWS_PER_00334].
Это указание по использованию было сгенерировано ИИ на основе спецификации AUTOSAR R25-11.
Руководство разработчика реализации в подготовке (сложность I2)
rollback_semantics Returned if UpdatePersistency, CleanUpPersistency, or Reset Persistency is currently being executed, or if RecoverKeyValue Storage is currently being executed for the same Key-Value Storage, or a SharedHandle of the same Key-Value Storage is currently in use.
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.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: d1720067a24eПроисхождение
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Использование
Синхронная функция ResetPersistency ([SWS_PER_00358]) из заголовочного файла ara/per/update.h служит для полного сброса всех хранилищ «ключ — значение» и файловых хранилищ приложения. При вызове все персистентное содержимое удаляется без остатка. Сами хранилища при этом создаются заново не сразу, а только при следующем вызове ara::per::OpenKeyValueStorage ([SWS_PER_00052]) или ara::per::OpenFileStorage ([SWS_PER_00116]). Файлы, которые повторно предоставляются после сброса, получают при этом статус создания FileCreationState::kCreatedDuringInstallation ([SWS_PER_00435]).
Обработка ошибок
В качестве возвращаемого значения функция возвращает ara::core::Result<void> ([SWS_PER_00358]). Если во время операции происходит сбой доступа к физическому носителю данных, функция возвращает kPhysicalStorageFailure без семантики отката. Если персистентные ресурсы заняты или параллельно модифицируются, вызов прерывается с ошибкой kResourceBusy и активной семантикой отката ([SWS_PER_00358]). Кроме того, могут возникать ошибки, специфичные для поставщика.
Параллелизм и ограничения
Интерфейс объявлен как exception safe, но явно классифицирован как not thread-safe ([SWS_PER_00358]). Он завершается сбоем с kResourceBusy, как только:
уже выполняются глобальные операции, такие как UpdatePersistency ([SWS_PER_00357]) или CleanUpPersistency ([SWS_PER_00567]),
отдельное хранилище параллельно обрабатывается через RecoverKeyValueStorage, ResetKeyValueStorage, RecoverAllFiles ([SWS_PER_00335]) или ResetAllFiles ([SWS_PER_00336]),
или все еще существует как минимум один активный SharedHandle хранилища «ключ — значение» или файлового хранилища ([SWS_PER_00358]).
Пока выполняется ResetPersistency, одновременные попытки открытия через OpenKeyValueStorage ([SWS_PER_00052]) или OpenFileStorage ([SWS_PER_00116]) в других потоках также приводят к kResourceBusy.
Этот текст был создан ИИ. Спецификации AUTOSAR имеют преимущественную силу.
Руководство разработчика реализации в подготовке (сложность I2)
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.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: a05074f12eedПроисхождение
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Использование
Синхронная функция ara::per::UpdatePersistency ([SWS_PER_00357], заголовочный файл ara/per/update.h) после установки новой целевой конфигурации обновляет все хранилища Key-Value и File приложения. Она служит для обновления персистентных данных Adaptive Application на этапе верификации [SWS_PER_00357]. Функция не принимает входных параметров и возвращает ara::core::Result<void>[SWS_PER_00357].
Обработка ошибок
В случае ошибки возвращенный Result содержит определенный код ошибки или ошибку, специфичную для производителя [SWS_PER_00357]. При этом различаются операции с семантикой отката и без нее:
Семантика отката: при kIntegrityCorrupted, kValidationFailed, kEncryptionFailed, kAuthenticationFailed, kTooManyFiles (превышение maxNumberOfFiles), kQuotaExceeded (превышение MaximumAllowedSize), а также kResourceBusy внесенные изменения сбрасываются [SWS_PER_00357].
Без семантики отката: при физических ошибках хранилища (kPhysicalStorageFailure), а также при недостатке физического дискового пространства (kOutOfStorageSpace) откат не гарантируется [SWS_PER_00357].
Параллелизм и ограничения
Функция специфицирована как исключениебезопасная (exception safe), но явно как потоконебезопасная (not thread-safe) [SWS_PER_00357]. Вызов завершается ошибкой kResourceBusy, как только SharedHandle хранилища Key-Value или File еще используется или параллельно выполняются функции обслуживания, такие как CleanUpPersistency[SWS_PER_00567], ResetPersistency[SWS_PER_00358], RecoverKeyValueStorage[SWS_PER_00333], ResetKeyValueStorage[SWS_PER_00334], RecoverAllFiles[SWS_PER_00335] или ResetAllFiles[SWS_PER_00336][SWS_PER_00357]. И наоборот, одновременные вызовы OpenKeyValueStorage[SWS_PER_00052] и OpenFileStorage[SWS_PER_00116] из других потоков во время обновления также завершаются с ошибкой kResourceBusy.
Взаимодействие
Если во время работы с помощью UCM была установлена новая целевая конфигурация и повторно считана через ReloadPersistencyManifest[SWS_PER_00577], закрытые хранилища обновляются через UpdatePersistency. Если ранее через RegisterDataUpdateIndication[SWS_PER_00578] или RegisterApplicationDataUpdateCallback[SWS_PER_00356] были зарегистрированы обратные вызовы, их вызов происходит синхронно в контексте UpdatePersistency[SWS_PER_00578].
Это указание по использованию было сгенерировано автоматически на основе спецификации AUTOSAR R25-11.
Руководство разработчика реализации в подготовке (сложность I2)
no_rollback_semantics Returned if the available physical storage space is insufficient for the update.
kTooManyFiles
rollback_semantics Returned if the files added during the update of any File Storage would exceed the configured PersistencyFileStorageInterface.maxNumberOfFiles.
kQuotaExceeded
rollback_semantics Returned if the update would exceed the configured PersistencyCommon.MaximumAllowedSize of any Key- Value Storage or File Storage.
kAuthentication-Failed
rollback_semantics Returned if calculating or checking the MAC of stored data fails.
Request a governed re-review of this record. The record is not changed immediately.
gemini-3.8-flash-low· 2026-10-13 · Немецкий оригинал