DEENESPTFRRUARHIKOZHNL

namespace ara::sm::s2r

Guia do utilizadorGERADO POR IA

Coordena a entrada e a saída do estado de Suspend-to-RAM para aplicações adaptativas.
GERADO POR IA não revisado Modelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: a8390997dcdf Procedência Perguntas em aberto (2)
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão

Coordena a entrada e a saída do estado de Suspend-to-RAM para aplicações adaptativas.

O namespace ara::sm::s2r coordena o mecanismo de Suspend-to-RAM para otimização dos tempos de desligamento e inicialização na AUTOSAR Adaptive Platform (SWS StateManagement §7.5 «Interaction with Suspend-to-RAM Functionality»). Por meio do componente central S2RHub e de instâncias S2RSatellite registradas, os processos compatíveis com S2R são notificados antes da entrada no estado de suspensão do sistema operacional e reconduzidos à operação regular ao despertar. Como restrição essencial, o uso por meio da abordagem interna de StateMachine exclui estritamente o acesso via API C++, enquanto verificações de IAM protegem todos os contextos de processo envolvidos ([SWS_SM_00684]).

Contexto

O namespace ara::sm::s2r disponibiliza funcionalidades para a coordenação de Suspend-to-RAM (S2R) dentro do módulo State Management. O objetivo desse mecanismo é a otimização dos tempos de desligamento e inicialização da máquina, utilizando um estado de suspensão do sistema operacional baseado em RAM em vez de um desligamento completo e inicialização a frio (SWS StateManagement §7.5 «Interaction with Suspend-to-RAM Functionality»). Antes da transição para o estado de suspensão do sistema operacional, entidades funcionais sem suporte a S2R devem ser desativadas e processos cujo executável esteja marcado como suspendToRamAware devem ser notificados a tempo (SWS StateManagement §7.5 «Interaction with Suspend-to-RAM Functionality»).

O ponto central de articulação é formado pela classe S2RHub, que controla a comunicação com instâncias da classe abstrata S2RSatellite (SWS StateManagement §7.5.1 «S2R Hub»). A orquestração do S2RHub pode ocorrer internamente pela abordagem de StateMachine do State Management ou externamente por meio de uma API C++ (por exemplo, em uma SMControlApplication); ambas as abordagens excluem-se mutuamente de forma estrita ([SWS_SM_00684], SWS StateManagement p. 96). Os acessos ao hub e o registro de satélites são protegidos por Identity and Access Management (IAM) ([SWS_SM_00706], [SWS_SM_00714], [SWS_SM_00715]).

diag_s2r_kontext sm_control SMControlApplication / State Management hub ara::sm::s2r::S2RHub sm_control->hub orquestra Suspend e Resume satellite ara::sm::s2r::S2RSatellite hub->satellite koordiniert Suspend-Modus process S2R-Aware Process satellite->process chama callbacks iam IAM (Identity & Access Management) iam->hub validiert Prozesskontext iam->satellite authentifiziert Satelliten

Diagrama de contexto: interação entre State Management, S2RHub, S2RSatellite e IAM. Fontes: SWS StateManagement §7.5.1 «S2R Hub», [SWS_SM_00684], [SWS_SM_00715].

Ciclo de vida

A instanciação de ara::sm::s2r::S2RHub ocorre dependendo da abordagem de arquitetura: no modo StateMachine, a instância é criada automaticamente pelo State Management assim que os elementos de lista de ações EnterSuspendToRam, EnterSuspendToRamOS ou LeaveSuspendToRam forem finalizados ([SWS_SM_00690]). Ao chamar o construtor ara::sm::s2r::S2RHub::S2RHub, é verificado via IAM se o contexto de processo atual coincide com a configuração SuspendToRamHubMapping.process ([SWS_SM_00706]). Apenas processos autorizados podem realizar a instanciação ([SWS_SM_00714]).

Os satélites são inicializados por meio do método de fábrica ara::sm::s2r::S2RSatellite::Create ([SWS_SM_00716]). Como S2RSatellite é uma classe abstrata, presume-se que uma derivação específica da aplicação seja implementada para fornecer as reações concretas (interpretação). Pergunta Q-e4747345883235e0 (aberta) O registro no hub ocorre ativamente por meio da chamada de ara::sm::s2r::S2RSatellite::Offer ([SWS_SM_00710]). O hub valida o contexto de processo do satélite com base em SuspendToRamSatelliteMapping.process ([SWS_SM_00715]). Um satélite permanece no estado de registro ativo até cancelar seu registro por meio de ara::sm::s2r::S2RSatellite::StopOffer ([SWS_SM_00710], [SWS_SM_00713]).

Em relação ao ciclo de vida de máquinas de estados, aplica-se a restrição de que os estados responsáveis pelo estado de suspensão não devem ser configurados com o elemento da lista de ações LeaveSuspendToRam ([SWS_SM_CONSTR_00035]). Esse elemento é reservado exclusivamente para a fase de retorno durante o despertar (SWS StateManagement p. 98).

Caminho de utilização

O uso típico do namespace divide-se em registro, preparação do estado de repouso, suspensão do sistema operacional e posterior despertar:

  1. Registro: A aplicação compatível com S2R cria o seu satélite e chama ara::sm::s2r::S2RSatellite::Offer para se registrar no hub ([SWS_SM_00710]). Supõe-se que a notificação entre o hub e os satélites ocorra por meio de comunicação entre processos interna da plataforma (interpretação). Pergunta (aberta)
  2. Solicitar suspensão: O nível de controle chama ara::sm::s2r::S2RHub::RequestToEnterSuspendMode ([SWS_SM_00701]). Na abordagem StateMachine, isso é disparado pelo elemento EnterSuspendToRam, sendo o seu valor de configuração maxActionItemDuration transmitido como parâmetro de timeout ([SWS_SM_00689]).
  3. Notificar satélites: O hub endereça todos os satélites registrados e instrui a execução do callback ara::sm::s2r::S2RSatellite::EnterSuspendMode ([SWS_SM_00701], [SWS_SM_00711]). RequestToEnterSuspendMode retorna assim que todos os satélites tiverem reagido, cancelado o registro ou ocorrido um timeout ([SWS_SM_00702]).
  4. Suspender sistema operacional: Por meio da chamada de ara::sm::s2r::S2RHub::EnterSuspendToRamOs (ou através do elemento da lista de ações EnterSuspendToRamOs), o estado de repouso propriamente dito do sistema operacional é iniciado ([SWS_SM_00692]).
  5. Coordenar despertar: Após o reinício, ara::sm::s2r::S2RHub::RequestToLeaveSuspendMode é chamado ([SWS_SM_00703], [SWS_SM_00691]). O hub instrui os satélites a executar o callback ara::sm::s2r::S2RSatellite::LeaveSuspendMode ([SWS_SM_00703], [SWS_SM_00711]).
  6. Cancelamento de registro: Caso um processo não deseje mais participar, ele cancela seu registro por meio de ara::sm::s2r::S2RSatellite::StopOffer ([SWS_SM_00710], [SWS_SM_00713]).
Sequência da coordenação de Suspend-to-RAMAufrufer (SMControlApplication / SM)ara::sm::s2r::S2RHubara::sm::s2r::S2RSatelliteOffer()Use Case: Transição para o estado de suspensãoRequestToEnterSuspendMode(timeout)EnterSuspendMode()Retorno de prontidãoResultEnterSuspendToRamOs()Use Case: Saída do estado SuspendRequestToLeaveSuspendMode()LeaveSuspendMode()Confirmação ou kRejectedGesamtergebnisUse Case: DeregistrierungStopOffer()

Diagrama de sequência: Ordem de chamadas para preparação e conclusão de Suspend-to-RAM. Fontes: [SWS_SM_00701], [SWS_SM_00702], [SWS_SM_00703], [SWS_SM_00707], [SWS_SM_00710], [SWS_SM_00711].

Cenários de erro

Na interação das classes ocorrem condições de erro específicas:

  • Violação de IAM na criação do hub: Se o contexto de processo na chamada do construtor não coincidir com SuspendToRamHubMapping.process, a violação InsufficientPermissionsViolation é disparada e o evento de segurança SEV_ACCESS_CONTROL_SM_IAM_ACCESS_DENIED</a> é reportado ([SWS_SM_00706]).
  • Rejeição de satélites não autenticados: Se o contexto de S2RSatellite divergir do processo registrado em SuspendToRamSatelliteMapping, o hub rejeita o registro ([SWS_SM_00715]).
  • Requisito de autenticação no satélite: Caso a configuração Force IAM switch esteja ativada, ara::sm::s2r::S2RSatellite::Create falha com o código de erro kAuthenticationRequired ([SWS_SM_00716]).
  • Timeout de comunicação: Se um satélite endereçado não responder dentro do prazo timeout durante a fase de suspensão ou de despertar, a operação retorna o código de erro kCommunicationTimeout ([SWS_SM_00707]).
  • Problemas ao sair do modo de suspensão: Se pelo menos um satélite responder negativamente com kRejected à solicitação para sair do modo de suspensão, RequestToLeaveSuspendMode confirma o resultado geral com kAtLeastOneHadIssuesToLeave ([SWS_SM_00707]).
  • Uso concorrente de API: O uso simultâneo da API C++ de S2RHub paralelamente à abordagem interna StateMachine é proibido e leva a inconsistências ([SWS_SM_00684]).

Este guia baseia-se na especificação AUTOSAR_AP_SWS_StateManagement (Release R25-11).

Classes

S2RHub classe

S2RHub class.

S2RSatellite abstract class.

Diagrama de classes

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.

G cluster_ns ara::sm::s2r nara__sm__s2r__S2RHub S2RHub nara__sm__s2r__S2RSatellite S2RSatellite