コード例 #1
0
ファイル: Os_Hook.c プロジェクト: gitter-badger/a_rtegen
void
ErrorHook(StatusType Error)
{
	TaskType	tskid;
	StatusType	ercd;

#ifdef IOC_E_NO_DATA
	/* IOC_E_NO_DATAはエラーではない */
	if (Error == IOC_E_NO_DATA) {
		return;
	}
#endif /* IOC_E_NO_DATA */

	syslog(LOG_NOTICE, "## ErrorHook is called !! (%d)", Error);

	ercd = GetTaskID(&tskid);
	if (ercd == E_OK) {
		syslog(LOG_NOTICE, "GetTaskID: %d", (sintptr) tskid);
	}
	else {
		syslog(LOG_NOTICE, "GetTaskID is unavailable.");
	}
	syslog(LOG_NOTICE, "GetISRID: %d", (sintptr) GetISRID());
	syslog(LOG_NOTICE, "OSErrorGetServiceId(): %d", OSErrorGetServiceId());

	return;
}
コード例 #2
0
/*test case:test the reaction of the system called with 
 an activation of a task*/
static void test_error_instance2(void)
{
	ISRType ISRType_inst_1;
	StatusType result_inst_1;
	
	SCHEDULING_CHECK_INIT(8);
	result_inst_1 = OSErrorGetServiceId();
	SCHEDULING_CHECK_AND_EQUAL_INT(8,OSServiceId_ActivateTask , result_inst_1);
	
	SCHEDULING_CHECK_INIT(9);
	ISRType_inst_1 = GetISRID();
	SCHEDULING_CHECK_AND_EQUAL_INT(9, INVALID_ISR, ISRType_inst_1);
	
		
}
コード例 #3
0
ErrorHook(StatusType Error)
{

  ISRType ISRInError;
  TaskType TaskInError;

  /*
   * This code sample shows how to determine which Task or
   * ISR was running when the error occurred.
   */
  ISRInError = GetISRID();
  if (ISRInError != INVALID_ISR) {
    /* The error occurred when ISR 'ISRInError' was running */
  } else {
    GetTaskID(&TaskInError);
    if (TaskInError != INVALID_TASK) {
      /* The error occurred when Task 'TaskInError' was running */
    } else {
      /* The error occurred during StartOS, Os_Cbk_Idle or ShutdownOS */
    }
  }

  /* 
   * This code sample shows how to determine which error
   * was detected.
   */
  switch (Error) {
    case E_OS_ACCESS:
      /* Handle E_OS_ACCESS */
      break;
    case E_OS_CALLEVEL:
      /* Handle E_OS_CALLEVEL */
      break;
    case E_OS_ID:
      /* Handle E_OS_ID */
      break;
    case E_OS_LIMIT:
      /* Handle E_OS_LIMIT */
      break;
    case E_OS_NOFUNC:
      /* Handle E_OS_NOFUNC */
      break;
    case E_OS_RESOURCE:
      /* Handle E_OS_RESOURCE */
      break;
    case E_OS_STATE:
      /* Handle E_OS_STATE */
      break;
    case E_OS_VALUE:
      /* Handle E_OS_VALUE */
      break;
    case E_OS_SERVICEID:
      /* Handle E_OS_SERVICEID */
      break;
    case E_OS_ILLEGAL_ADDRESS:
      /* Handle E_OS_ILLEGAL_ADDRESS */
      break;
    case E_OS_MISSINGEND:
      /* Handle E_OS_MISSINGEND */
      break;
    case E_OS_DISABLEDINT:
      /* Handle E_OS_DISABLEDINT */
      break;
    case E_OS_STACKFAULT:
      /* Handle E_OS_STACKFAULT */
      break;
    case E_OS_SYS_NO_RESTART:
      /* Handle E_OS_SYS_NO_RESTART */
      break;
    case E_OS_SYS_RESTART:
      /* Handle E_OS_SYS_RESTART */
      break;
    case E_OS_SYS_OVERRUN:
      /* Handle E_OS_SYS_OVERRUN */
      break;
  }

#ifdef OSErrorGetServiceId
  /*
   * With Service ID logging enabled, it is possible to 
   * determine which API was running when the error was
   * detected through OSErrorGetServiceId().
   * If Parameter logging is enabled, it is also possible
   * to use the OSError_ macros to see the parameter
   * values passed to the API.
   */
  switch (OSErrorGetServiceId()) {
    case OSServiceId_None:
      /* Handle ISR termination errors */
      break;
    case OSServiceId_ActivateTask:
      /* Handle error from ActivateTask */
      /* OSError_ActivateTask_TaskID() contains the TaskType 'TaskID' passed to ActivateTask */
      break;
    case OSServiceId_Os_AdvanceCounter:
      /* Handle error from Os_AdvanceCounter */
      /* OSError_Os_AdvanceCounter_CounterID() contains the CounterType 'CounterID' passed to Os_AdvanceCounter */
      break;
    case OSServiceId_CancelAlarm:
      /* Handle error from CancelAlarm */
      /* OSError_CancelAlarm_AlarmID() contains the AlarmType 'AlarmID' passed to CancelAlarm */
      break;
    case OSServiceId_CallTrustedFunction:
      /* Handle error from CallTrustedFunction */
      /* OSError_CallTrustedFunction_FunctionIndex() contains the TrustedFunctionIndexType 'FunctionIndex' passed to CallTrustedFunction */
      /* OSError_CallTrustedFunction_FunctionParams() contains the TrustedFunctionParameterRefType 'FunctionParams' passed to CallTrustedFunction */
      break;
    case OSServiceId_CheckISRMemoryAccess:
      /* Handle error from CheckISRMemoryAccess */
      break;
    case OSServiceId_CheckObjectAccess:
      /* Handle error from CheckObjectAccess */
      break;
    case OSServiceId_CheckObjectOwnership:
      /* Handle error from CheckObjectOwnership */
      break;
    case OSServiceId_CheckTaskMemoryAccess:
      /* Handle error from CheckTaskMemoryAccess */
      break;
    case OSServiceId_ChainTask:
      /* Handle error from ChainTask */
      /* OSError_ChainTask_TaskID() contains the TaskType 'TaskID' passed to ChainTask */
      break;
    case OSServiceId_ClearEvent:
      /* Handle error from ClearEvent */
      /* OSError_ClearEvent_Mask() contains the EventMaskType 'Mask' passed to ClearEvent */
      break;
    case OSServiceId_DisableAllInterrupts:
      /* Handle error from DisableAllInterrupts */
      break;
    case OSServiceId_EnableAllInterrupts:
      /* Handle error from EnableAllInterrupts */
      break;
    case OSServiceId_GetActiveApplicationMode:
      /* Handle error from GetActiveApplicationMode */
      break;
    case OSServiceId_GetAlarm:
      /* Handle error from GetAlarm */
      /* OSError_GetAlarm_AlarmID() contains the AlarmType 'AlarmID' passed to GetAlarm */
      /* OSError_GetAlarm_Tick() contains the TickRefType 'Tick' passed to GetAlarm */
      break;
    case OSServiceId_GetAlarmBase:
      /* Handle error from GetAlarmBase */
      /* OSError_GetAlarmBase_AlarmID() contains the AlarmType 'AlarmID' passed to GetAlarmBase */
      /* OSError_GetAlarmBase_Info() contains the AlarmBaseRefType 'Info' passed to GetAlarmBase */
      break;
    case OSServiceId_GetApplicationID:
      /* Handle error from GetApplicationID */
      break;
    case OSServiceId_GetCounterValue:
      /* Handle error from GetCounterValue */
      /* OSError_GetCounterValue_CounterID() contains the CounterType 'CounterID' passed to GetCounterValue */
      /* OSError_GetCounterValue_Value() contains the TickRefType 'Value' passed to GetCounterValue */
      break;
    case OSServiceId_GetElapsedCounterValue:
      /* Handle error from GetElapsedCounterValue */
      /* OSError_GetElapsedCounterValue_CounterID() contains the CounterType 'CounterID' passed to GetElapsedCounterValue */
      /* OSError_GetElapsedCounterValue_Value() contains the TickRefType 'Value' passed to GetElapsedCounterValue */
      /* OSError_GetElapsedCounterValue_ElapsedValue() contains the TickRefType 'ElapsedValue' passed to GetElapsedCounterValue */
      break;
    case OSServiceId_GetEvent:
      /* Handle error from GetEvent */
      /* OSError_GetEvent_TaskID() contains the TaskType 'TaskID' passed to GetEvent */
      /* OSError_GetEvent_Event() contains the EventMaskRefType 'Event' passed to GetEvent */
      break;
    case OSServiceId_GetISRID:
      /* Handle error from GetISRID */
      break;
    case OSServiceId_GetResource:
      /* Handle error from GetResource */
      /* OSError_GetResource_ResID() contains the ResourceType 'ResID' passed to GetResource */
      break;
    case OSServiceId_GetScheduleTableStatus:
      /* Handle error from GetScheduleTableStatus */
      /* OSError_GetScheduleTableStatus_ScheduleTableID() contains the ScheduleTableType 'ScheduleTableID' passed to GetScheduleTableStatus */
      /* OSError_GetScheduleTableStatus_ScheduleStatus() contains the ScheduleTableStatusRefType 'ScheduleStatus' passed to GetScheduleTableStatus */
      break;
    case OSServiceId_GetTaskID:
      /* Handle error from GetTaskID */
      /* OSError_GetTaskID_TaskID() contains the TaskRefType 'TaskID' passed to GetTaskID */
      break;
    case OSServiceId_GetTaskState:
      /* Handle error from GetTaskState */
      /* OSError_GetTaskState_TaskID() contains the TaskType 'TaskID' passed to GetTaskState */
      /* OSError_GetTaskState_State() contains the TaskStateRefType 'State' passed to GetTaskState */
      break;
    case OSServiceId_GetVersionInfo:
      /* Handle error from GetVersionInfo */
      break;
    case OSServiceId_IncrementCounter:
      /* Handle error from IncrementCounter */
      /* OSError_IncrementCounter_CounterID() contains the CounterType 'CounterID' passed to IncrementCounter */
      break;
    case OSServiceId_NextScheduleTable:
      /* Handle error from NextScheduleTable */
      /* OSError_NextScheduleTable_ScheduleTableID_From() contains the ScheduleTableType 'ScheduleTableID_From' passed to NextScheduleTable */
      /* OSError_NextScheduleTable_ScheduleTableID_To() contains the ScheduleTableType 'ScheduleTableID_To' passed to NextScheduleTable */
      break;
    case OSServiceId_Os_GetExecutionTime:
      /* Handle error from Os_GetExecutionTime */
      break;
    case OSServiceId_Os_GetISRMaxExecutionTime:
      /* Handle error from Os_GetISRMaxExecutionTime */
      /* OSError_Os_GetISRMaxExecutionTime_ISRID() contains the ISRType 'ISRID' passed to Os_GetISRMaxExecutionTime */
      break;
    case OSServiceId_Os_GetTaskMaxExecutionTime:
      /* Handle error from Os_GetTaskMaxExecutionTime */
      /* OSError_Os_GetTaskMaxExecutionTime_TaskID() contains the TaskType 'TaskID' passed to Os_GetTaskMaxExecutionTime */
      break;
    case OSServiceId_Os_ResetISRMaxExecutionTime:
      /* Handle error from Os_ResetISRMaxExecutionTime */
      /* OSError_Os_ResetISRMaxExecutionTime_ISRID() contains the ISRType 'ISRID' passed to Os_ResetISRMaxExecutionTime */
      break;
    case OSServiceId_Os_ResetTaskMaxExecutionTime:
      /* Handle error from Os_ResetTaskMaxExecutionTime */
      /* OSError_Os_ResetTaskMaxExecutionTime_TaskID() contains the TaskType 'TaskID' passed to Os_ResetTaskMaxExecutionTime */
      break;
    case OSServiceId_Os_GetStackUsage:
      /* Handle error from Os_GetStackUsage */
      break;
    case OSServiceId_Os_GetISRMaxStackUsage:
      /* Handle error from Os_GetISRMaxStackUsage */
      /* OSError_Os_GetISRMaxStackUsage_ISRID() contains the ISRType 'ISRID' passed to Os_GetISRMaxStackUsage */
      break;
    case OSServiceId_Os_GetTaskMaxStackUsage:
      /* Handle error from Os_GetTaskMaxStackUsage */
      /* OSError_Os_GetTaskMaxStackUsage_TaskID() contains the TaskType 'TaskID' passed to Os_GetTaskMaxStackUsage */
      break;
    case OSServiceId_Os_ResetISRMaxStackUsage:
      /* Handle error from Os_ResetISRMaxStackUsage */
      /* OSError_Os_ResetISRMaxStackUsage_ISRID() contains the ISRType 'ISRID' passed to Os_ResetISRMaxStackUsage */
      break;
    case OSServiceId_Os_ResetTaskMaxStackUsage:
      /* Handle error from Os_ResetTaskMaxStackUsage */
      /* OSError_Os_ResetTaskMaxStackUsage_TaskID() contains the TaskType 'TaskID' passed to Os_ResetTaskMaxStackUsage */
      break;
    case OSServiceId_ReleaseResource:
      /* Handle error from ReleaseResource */
      /* OSError_ReleaseResource_ResID() contains the ResourceType 'ResID' passed to ReleaseResource */
      break;
    case OSServiceId_Restart:
      /* Handle error from Restart */
      break;
    case OSServiceId_ResumeAllInterrupts:
      /* Handle error from ResumeAllInterrupts */
      break;
    case OSServiceId_ResumeOSInterrupts:
      /* Handle error from ResumeOSInterrupts */
      break;
    case OSServiceId_Schedule:
      /* Handle error from Schedule */
      break;
    case OSServiceId_SetEvent:
      /* Handle error from SetEvent */
      /* OSError_SetEvent_TaskID() contains the TaskType 'TaskID' passed to SetEvent */
      /* OSError_SetEvent_Mask() contains the EventMaskType 'Mask' passed to SetEvent */
      break;
    case OSServiceId_SetAbsAlarm:
      /* Handle error from SetAbsAlarm */
      /* OSError_SetAbsAlarm_AlarmID() contains the AlarmType 'AlarmID' passed to SetAbsAlarm */
      /* OSError_SetAbsAlarm_start() contains the TickType 'start' passed to SetAbsAlarm */
      /* OSError_SetAbsAlarm_cycle() contains the TickType 'cycle' passed to SetAbsAlarm */
      break;
    case OSServiceId_SetRelAlarm:
      /* Handle error from SetRelAlarm */
      /* OSError_SetRelAlarm_AlarmID() contains the AlarmType 'AlarmID' passed to SetRelAlarm */
      /* OSError_SetRelAlarm_increment() contains the TickType 'increment' passed to SetRelAlarm */
      /* OSError_SetRelAlarm_cycle() contains the TickType 'cycle' passed to SetRelAlarm */
      break;
    case OSServiceId_SetRestartPoint:
      /* Handle error from SetRestartPoint */
      break;
    case OSServiceId_ShutdownOS:
      /* Handle error from ShutdownOS */
      break;
    case OSServiceId_StartOS:
      /* Handle error from StartOS */
      break;
    case OSServiceId_StartScheduleTableAbs:
      /* Handle error from StartScheduleTableAbs */
      /* OSError_StartScheduleTableAbs_ScheduleTableID() contains the ScheduleTableType 'ScheduleTableID' passed to StartScheduleTableAbs */
      /* OSError_StartScheduleTableAbs_Start() contains the TickType 'Start' passed to StartScheduleTableAbs */
      break;
    case OSServiceId_StartScheduleTableRel:
      /* Handle error from StartScheduleTableRel */
      /* OSError_StartScheduleTableRel_ScheduleTableID() contains the ScheduleTableType 'ScheduleTableID' passed to StartScheduleTableRel */
      /* OSError_StartScheduleTableRel_Offset() contains the TickType 'Offset' passed to StartScheduleTableRel */
      break;
    case OSServiceId_StartScheduleTableSynchron:
      /* Handle error from StartScheduleTableSynchron */
      /* OSError_StartScheduleTableSynchron_ScheduleTableID() contains the ScheduleTableType 'ScheduleTableID' passed to StartScheduleTableSynchron */
      break;
    case OSServiceId_SyncScheduleTable:
      /* Handle error from SyncScheduleTable */
      /* OSError_SyncScheduleTable_ScheduleTableID() contains the ScheduleTableType 'ScheduleTableID' passed to SyncScheduleTable */
      /* OSError_SyncScheduleTable_Value() contains the TickType 'Value' passed to SyncScheduleTable */
      break;
    case OSServiceId_SetScheduleTableAsync:
      /* Handle error from SetScheduleTableAsync */
      /* OSError_SetScheduleTableAsync_ScheduleTableID() contains the ScheduleTableType 'ScheduleTableID' passed to SetScheduleTableAsync */
      break;
    case OSServiceId_StopScheduleTable:
      /* Handle error from StopScheduleTable */
      /* OSError_StopScheduleTable_ScheduleTableID() contains the ScheduleTableType 'ScheduleTableID' passed to StopScheduleTable */
      break;
    case OSServiceId_SuspendAllInterrupts:
      /* Handle error from SuspendAllInterrupts */
      break;
    case OSServiceId_SuspendOSInterrupts:
      /* Handle error from SuspendOSInterrupts */
      break;
    case OSServiceId_TerminateApplication:
      /* Handle error from TerminateApplication */
      /* OSError_TerminateApplication_RestartOption() contains the RestartType 'RestartOption' passed to TerminateApplication */
      break;
    case OSServiceId_TerminateTask:
      /* Handle error from TerminateTask */
      break;
    case OSServiceId_WaitEvent:
      /* Handle error from WaitEvent */
      /* OSError_WaitEvent_Mask() contains the EventMaskType 'Mask' passed to WaitEvent */
      break;
  }
#endif /* OSErrorGetServiceId */

}
コード例 #4
0
ファイル: framework.c プロジェクト: jkenergy/scalios
/* Error hook for all tests
 * 
 * $Req: artf1222 $
 */
void ErrorHook(StatusType rc)
{
#ifdef USEERRORHOOK
#ifdef EXPECTSERRORS
	TaskType from_task;
	ISRType from_isr;
	TaskStateType state;
	
	if(in_error_hook) {
		test_failed(OS_HERE);		/* Error hook not permitted to be called recursively $Req: artf1112 $ */
	}
	in_error_hook = 1U;
	
	SET_TESTEVENT("ErrorHook");
	
#ifdef OS_EXTENDED_STATUS
	/* Test for recursive error hook call by making a legal call which generates an error */
	GetTaskState(0, &state);
#endif

	/* $Req: artf1140 $ */
	GetTaskID(&from_task);
	from_isr = GetISRID();
	
	if(from_isr == INVALID_ISR) {
		if(from_task == INVALID_TASK) {
			SET_TESTEVENT("<No runnable>");		/* Not sure how to get an error hook called if no task or ISR running.. */
		}
		else {	/* Must be a task that caused the error hook to run since there is no ISR running */
#ifdef INCLUDE_HANDLE_NAME_MAP
			SET_TESTEVENT(TaskType2string(from_task));
#else
			SET_TESTEVENT("<A task>");
#endif
			/* ErrorHook() should be called with cat2 interrupts locked.
			 * 
			 * $Req: artf1110 $
			 * 
			 * Following code will trigger the cat2 ISR here but it should not actually run. Dismiss it immediately.
			 * 
			 * Only do this if the error hook is called from outside an ISR because otherwise this would mess up
			 * the only cat2 ISR. In mosts tests the ISR running is logged, and this would cause the test to fail
			 * because there should be no expect ISR log entries at this point.
			 */
			testing_trigger_isr();
			testing_dismiss_isr();
		}
	}
	else {	/* An ISR must be running; this takes precedence over a task: the error must have
			 * been raised in the ISR since the task can't be running (all ISRs have higher priorities
			 * than all tasks)
			 */
#ifdef INCLUDE_HANDLE_NAME_MAP
		SET_TESTEVENT(ISRType2string(from_isr));
#else
		SET_TESTEVENT("<An ISR>");
#endif
	}
	/* If E_OS_MISSING end called then the task is still valid and still RUNNING when the error hook called */
	if(rc == E_OS_MISSINGEND) {				/* $Req: artf1041 $ */
		if(from_task == INVALID_TASK) {
			test_failed(OS_HERE);
		}
		else {
			GetTaskState(from_task, &state);
			if(state != RUNNING) {
				test_failed(OS_HERE);
			}
		}
	}

	/* OSErrorGetServiceId() callable from ErrorHook()
	 * 
	 * $Req: artf1114 $
	 * $Req: artf1228 $
	 */

	SET_TESTEVENT(OSServiceIdType2string(OSErrorGetServiceId(), "<Unknown service ID>"));		
	SET_TESTEVENT(StatusType2string(rc, "<Unknown StatusType code>"));
	set_error_hook_parameters(OSErrorGetServiceId());

	in_error_hook = 0U;

#else /* don't expect errors */
	test_failed(OS_HERE);
#endif
#else
	/* don't use error hook
	 * 
	 * $Req: artf1223 $
	 */
	test_failed(OS_HERE);
#endif
}
コード例 #5
0
/*test case:test the reaction of the system called with 
 an activation of a task*/
static void test_t1_instance(void)
{
	ApplicationType ApplicationType_inst_1, ApplicationType_inst_2;
	ISRType ISRType_inst_1;
	ObjectAccessType ObjectAccessType_inst_1;
	ScheduleTableStatusType ScheduleTableStatusType_inst_1;
	StatusType result_inst_1, result_inst_2, result_inst_3, result_inst_4, result_inst_5, result_inst_6, result_inst_7, result_inst_8, result_inst_9, result_inst_10, result_inst_11, result_inst_12;
	TickType TickType_inst_1, TickType_inst_2;
	
	SCHEDULING_CHECK_STEP(1);
	DisableAllInterrupts();
	
	SCHEDULING_CHECK_INIT(2);
	ApplicationType_inst_1 = GetApplicationID();
	SCHEDULING_CHECK_AND_EQUAL_INT(3, app1, ApplicationType_inst_1);
	
	SCHEDULING_CHECK_INIT(4);
	ISRType_inst_1 = GetISRID();
	SCHEDULING_CHECK_AND_EQUAL_INT(5, INVALID_ISR, ISRType_inst_1);
	
	SCHEDULING_CHECK_INIT(6);
	ObjectAccessType_inst_1 = CheckObjectAccess(app1, OBJECT_TASK, t1);
	SCHEDULING_CHECK_AND_EQUAL_INT(7, ACCESS, ObjectAccessType_inst_1);

	SCHEDULING_CHECK_INIT(8);
	ApplicationType_inst_2 = CheckObjectOwnership(OBJECT_TASK, t1);
	SCHEDULING_CHECK_AND_EQUAL_INT(9, app1, ApplicationType_inst_2);
	
	SCHEDULING_CHECK_INIT(10);
	result_inst_1 = StartScheduleTableRel(sched1, 1);
	SCHEDULING_CHECK_AND_EQUAL_INT(11, E_OS_DISABLEDINT, result_inst_1);

	SCHEDULING_CHECK_INIT(12);
	result_inst_2 = StartScheduleTableAbs(sched1, 0);
	SCHEDULING_CHECK_AND_EQUAL_INT(13, E_OS_DISABLEDINT, result_inst_2);
		
	SCHEDULING_CHECK_INIT(14);
	result_inst_3 = StopScheduleTable(sched1);
	SCHEDULING_CHECK_AND_EQUAL_INT(15, E_OS_DISABLEDINT, result_inst_3);
	
	SCHEDULING_CHECK_INIT(16);
	result_inst_4 = NextScheduleTable(sched1, sched2);
	SCHEDULING_CHECK_AND_EQUAL_INT(17, E_OS_DISABLEDINT, result_inst_4);
		
	SCHEDULING_CHECK_INIT(18);
	result_inst_5 = StartScheduleTableSynchron(sched1);
	SCHEDULING_CHECK_AND_EQUAL_INT(19, E_OS_DISABLEDINT, result_inst_5);
	
	SCHEDULING_CHECK_INIT(20);
	result_inst_6 = SyncScheduleTable(sched1, 0);
	SCHEDULING_CHECK_AND_EQUAL_INT(21, E_OS_DISABLEDINT, result_inst_6);
	
	SCHEDULING_CHECK_INIT(22);
	result_inst_7 = GetScheduleTableStatus(sched1, &ScheduleTableStatusType_inst_1);
	SCHEDULING_CHECK_AND_EQUAL_INT(23, E_OS_DISABLEDINT, result_inst_7);
	
	SCHEDULING_CHECK_INIT(24);
	result_inst_8 = SetScheduleTableAsync(sched1);
	SCHEDULING_CHECK_AND_EQUAL_INT(25, E_OS_DISABLEDINT, result_inst_8);
	
	SCHEDULING_CHECK_INIT(26);
	result_inst_9 = IncrementCounter(Software_Counter1);
	SCHEDULING_CHECK_AND_EQUAL_INT(27, E_OS_DISABLEDINT, result_inst_9);
	
	SCHEDULING_CHECK_INIT(28);
	result_inst_10 = GetCounterValue(Software_Counter1, &TickType_inst_1);
	SCHEDULING_CHECK_AND_EQUAL_INT(29, E_OS_DISABLEDINT, result_inst_10);
	
	SCHEDULING_CHECK_INIT(30);
	result_inst_11 = GetElapsedCounterValue(Software_Counter1, &TickType_inst_1, &TickType_inst_2);
	SCHEDULING_CHECK_AND_EQUAL_INT(31, E_OS_DISABLEDINT, result_inst_11);
	
	SCHEDULING_CHECK_INIT(32);
	result_inst_12 = TerminateApplication(app1, NO_RESTART);
	SCHEDULING_CHECK_AND_EQUAL_INT(33, E_OS_DISABLEDINT, result_inst_12);

	SCHEDULING_CHECK_STEP(34);	
	EnableAllInterrupts();
	
	/*
	 Missing :
		- CallTrustedFunction
		- CheckISRMemoryAccess
		- CheckTaskMemoryAccess
		- GetActiveApplicationMode (OS tests)
	 Ok but not tested :
		- StartOS (OS tests)
		- ShutdownOS (OS tests)
	 */
}