Protection HookAUTOSAR OS가 심각한 런타임 에러를 감지했을 때 호출하는 사용자 정의 복구 훅. OSEK의 ErrorHookAPI 호출 실패를 알려주는 “통지형” 훅이라면, ProtectionHook은 감지된 치명적 이벤트(Stack Overflow, Timing 위반, Memory 침범 등)에 대해 시스템이 어떻게 대응할지를 사용자가 결정하는 “복구 정책” 훅이다. 반환값으로 5가지 복구 옵션 중 하나를 선택한다.

시그니처

ProtectionReturnType ProtectionHook(StatusType FatalError);
  • 설정에 따라 사용 여부를 선택할 수 있다. 설정되지 않은 상태에서 치명적 에러가 발생하면 OS는 바로 ShutdownOS(FatalError)를 호출한다.
  • ProtectionHook이 설정된 경우 OS는 훅을 호출하고 반환값에 따라 동작을 결정한다.
  • ErrorHook과 달리 StatusType은 에러 코드가 아니라 감지된 protection 사건의 종류를 전달한다.

감지되는 심각한 에러 4종

카테고리발생 조건FatalError
Stack FaultTask/ISR의 stack이 overflow 또는 underflowE_OS_STACKFAULT
Timing ProtectionTask/ISR 수행 시간이 예산 초과 / 너무 잦은 activation (inter-arrival 하한 위반) / resource·interrupt 과점유E_OS_PROTECTION_TIME · E_OS_PROTECTION_ARRIVAL · E_OS_PROTECTION_LOCKED
Instruction Exceptiondivide-by-zero 등 명령어 실행 예외E_OS_PROTECTION_EXCEPTION
Memory Protection권한 없는 메모리 영역 접근 (Code/Data/Stack)E_OS_PROTECTION_MEMORY

각 protection 메커니즘은 AUTOSAR OS의 해당 섹션 참고.

5가지 복구 옵션 (반환값)

ProtectionReturnType ProtectionHook(StatusType FatalError) {
    return PRO_IGNORE;                   // 아무 일도 하지 않음
    return PRO_TERMINATETASKISR;         // 문제가 발생한 Task/ISR 종료
    return PRO_TERMINATEAPPL;            // Task/ISR이 속한 OS-Application 종료
    return PRO_TERMINATEAPPL_RESTART;    // Task/ISR이 속한 OS-Application 재시작
    return PRO_SHUTDOWN;                 // OS 전체 종료
}

옵션 선택 가이드:

옵션상황
PRO_IGNORE감지는 했으나 무시 (디버그·로깅용, production 권장 X)
PRO_TERMINATETASKISR해당 Task/ISR만 로컬하게 정리 가능한 경우
PRO_TERMINATEAPPLTask가 속한 OS-Application의 상태 일관성이 깨진 경우 (공용 데이터 손상 등)
PRO_TERMINATEAPPL_RESTART격리된 OS-Application을 재시작해 복구하는 자동차 fault-tolerance 시나리오
PRO_SHUTDOWN시스템 전체 무결성 의심 (Memory Protection 위반 등)

OS는 반환된 옵션에 따라 해당 객체 정리(Task/ISR kill, OS-Application terminate/restart, ShutdownOS)를 수행한다.

ErrorHook과의 비교

항목ErrorHookProtectionHook
소속 스펙OSEK/VDXAUTOSAR OS 확장 (SC2 이상)
트리거OS API 반환값이 E_OK가 아닐 때OS가 감지한 심각한 런타임 이벤트 (Stack/Timing/Exception/Memory)
반환 값voidProtectionReturnType — 복구 동작 선택
전달 정보StatusType error + OSErrorGetServiceId() + 파라미터 매크로StatusType FatalError (protection 카테고리)
사용 성격통지·로깅·디버깅 중심복구·정책 결정 — 반환이 OS 동작을 좌우

같이 보기