/* rtxcapi.h - kernel interface */ /* * RTXC Quadros Version 1.0 * Copyright (c) 1999-2003 * Quadros Systems, Inc. * ALL RIGHTS RESERVED * * THE INFORMATION HEREIN IS CONFIDENTIAL AND PROPRIETARY. * UNAUTHORIZED DISCLOSURE OR DISTRIBUTION IS PROHIBITED. */ /* * * modification history * * 20-jan-2003 wld removed #include "rtxstruc.h" * */ #ifndef _RTXCAPI_H /* { */ #define _RTXCAPI_H #ifdef __cplusplus /* { */ extern "C" // disable C++ name "decoration" { #endif /* } __cplusplus */ #include "rtxcopts.h" #include "typedef.h" #include "rccodes.h" #include "fecodes.h" #include "rtxcprop.h" #ifdef HAS_TraceMode /* { */ #include "rtxctag.h" #endif /* } HAS_TraceMode */ #define MSABI MSABI KSRC INIT_SysProp(const SYSPROP *); MSABI KSRC INIT_ObjectClass(KCLASS, const KCLASSPROP *); #ifdef HAS_Threads /* { */ /*********************/ /****** Threads ******/ /*********************/ #define INIT_ThreadClassProp(pkclassprop) INIT_ObjectClass(THREAD_KCLASS, pkclassprop) #ifdef HAS_RTXCss /* { */ /***************************/ /* Thread-level Thread API */ /***************************/ #ifdef HAS_TS_DefThreadProp /* { */ MSABI void TS_DefThreadProp(THREAD, const THREADPROP *); #endif /* } HAS_TS_DefThreadProp */ #ifdef HAS_TS_GetThreadProp /* { */ MSABI void TS_GetThreadProp(THREAD, THREADPROP *); #endif /* } HAS_TS_GetThreadProp */ #ifdef HAS_TS_GetThreadID /* { */ MSABI THREAD TS_GetThreadID(void); #endif /* } HAS_TS_GetThreadID */ #ifdef HAS_TS_ScheduleThread /* { */ MSABI KSRC TS_ScheduleThread(THREAD); #endif /* } HAS_TS_ScheduleThread */ #ifdef HAS_TS_UnscheduleThread /* { */ MSABI void TS_UnscheduleThread(THREAD); #endif /* } HAS_TS_UnscheduleThread */ #ifdef HAS_TS_ScheduleThreadArg /* { */ MSABI KSRC TS_ScheduleThreadArg(THREAD, void *); #endif /* } HAS_TS_ScheduleThreadArg */ #ifdef HAS_TS_DefThreadArg /* { */ MSABI void TS_DefThreadArg(THREAD, void *); #endif /* } HAS_TS_DefThreadArg */ #ifdef HAS_TS_GetThreadArg /* { */ MSABI void * TS_GetThreadArg(THREAD); #endif /* } HAS_TS_GetThreadArg */ #ifdef HAS_TS_DefThreadEnvArg /* { */ MSABI void TS_DefThreadEnvArg(THREAD, void *); #endif /* } HAS_TS_DefThreadEnvArg */ #ifdef HAS_TS_GetThreadEnvArg /* { */ MSABI void * TS_GetThreadEnvArg(THREAD); #endif /* } HAS_TS_GetThreadEnvArg */ #ifdef HAS_TS_DefThreadEntry /* { */ MSABI void TS_DefThreadEntry(THREAD, void (*)(void *,void *)); #endif /* } HAS_TS_DefThreadEntry */ #ifdef HAS_TS_IncrThreadGate /* { */ MSABI KSRC TS_IncrThreadGate(THREAD); #endif /* } HAS_TS_IncrThreadGate */ #ifdef HAS_TS_DecrThreadGate /* { */ MSABI KSRC TS_DecrThreadGate(THREAD); #endif /* } HAS_TS_DecrThreadGate */ #ifdef HAS_TS_ORThreadGateBits /* { */ MSABI KSRC TS_ORThreadGateBits(THREAD, GATEKEY); #endif /* } HAS_TS_ORThreadGateBits */ #ifdef HAS_TS_ClearThreadGateBits /* { */ MSABI KSRC TS_ClearThreadGateBits(THREAD, GATEKEY); #endif /* } HAS_TS_ClearThreadGateBits */ #ifdef HAS_TS_SetThreadGate /* { */ MSABI void TS_SetThreadGate(THREAD, GATEKEY); #endif /* } HAS_TS_SetThreadGate */ #ifdef HAS_TS_GetThreadGate /* { */ MSABI GATEKEY TS_GetThreadGate(THREAD); #endif /* } HAS_TS_GetThreadGate */ #ifdef HAS_TS_GetThreadGateLoadPreset /* { */ MSABI GATEKEY TS_GetThreadGateLoadPreset(void); #endif /* } HAS_TS_GetThreadGateLoadPreset */ #ifdef HAS_TS_SetThreadGatePreset /* { */ MSABI void TS_SetThreadGatePreset(THREAD, GATEKEY); #endif /* } HAS_TS_SetThreadGatePreset */ #ifdef HAS_TS_GetThreadGatePreset /* { */ MSABI GATEKEY TS_GetThreadGatePreset(THREAD); #endif /* } HAS_TS_GetThreadGatePreset */ #ifdef HAS_TS_PresetThreadGate /* { */ MSABI void TS_PresetThreadGate(THREAD); #endif /* } HAS_TS_PresetThreadGate */ /* Level related operations */ #ifdef HAS_TS_EnableThreadScheduler /* { */ MSABI void TS_EnableThreadScheduler(void); #endif /* } HAS_TS_EnableThreadScheduler */ #ifdef HAS_TS_DisableThreadScheduler /* { */ MSABI void TS_DisableThreadScheduler(void); #endif /* } HAS_TS_DisableThreadScheduler */ #ifdef HAS_TS_RaiseThreadLevel /* { */ MSABI KSRC TS_RaiseThreadLevel(TLEVEL tlevel); #endif /* } HAS_TS_RaiseThreadLevel */ #ifdef HAS_TS_LowerThreadLevel /* { */ MSABI KSRC TS_LowerThreadLevel(TLEVEL tlevel); #endif /* } HAS_TS_LowerThreadLevel */ #ifdef HAS_TS_GetThreadBaseLevel /* { */ MSABI TLEVEL TS_GetThreadBaseLevel(THREAD thread); #endif /* } HAS_TS_GetThreadBaseLevel */ #ifdef HAS_TS_GetThreadCurrentLevel /* { */ MSABI TLEVEL TS_GetThreadCurrentLevel(void); #endif /* } HAS_TS_GetThreadCurrentLevel */ #endif /* } HAS_RTXCss */ /******************************/ /* Interrupt-level Thread API */ /******************************/ #ifdef HAS_IS_ScheduleThread /* { */ MSABI KSRC IS_ScheduleThread(THREAD); #endif /* } HAS_IS_ScheduleThread */ #ifdef HAS_IS_UnscheduleThread /* { */ MSABI void IS_UnscheduleThread(THREAD); #endif /* } HAS_IS_UnscheduleThread */ #ifdef HAS_IS_ScheduleThreadArg /* { */ MSABI KSRC IS_ScheduleThreadArg(THREAD, void *); #endif /* } HAS_IS_ScheduleThreadArg */ #ifdef HAS_IS_DefThreadArg /* { */ MSABI void IS_DefThreadArg(THREAD, void *); #endif /* } HAS_IS_DefThreadArg */ #ifdef HAS_IS_DefThreadEntry /* { */ MSABI void IS_DefThreadEntry(THREAD, void (*)(void *,void *)); #endif /* } HAS_IS_DefThreadEntry */ #ifdef HAS_IS_IncrThreadGate /* { */ MSABI KSRC IS_IncrThreadGate(THREAD); #endif /* } HAS_IS_IncrThreadGate */ #ifdef HAS_IS_DecrThreadGate /* { */ MSABI KSRC IS_DecrThreadGate(THREAD); #endif /* } HAS_IS_DecrThreadGate */ #ifdef HAS_IS_ORThreadGateBits /* { */ MSABI KSRC IS_ORThreadGateBits(THREAD, GATEKEY); #endif /* } HAS_IS_ORThreadGateBits */ #ifdef HAS_IS_ClearThreadGateBits /* { */ MSABI KSRC IS_ClearThreadGateBits(THREAD, GATEKEY); #endif /* } HAS_IS_ClearThreadGateBits */ #endif /* } HAS_Threads */ #ifdef HAS_EventSources /* { */ /**************************/ /****** EventSources ******/ /**************************/ #define INIT_EventSourceClassProp(pkclassprop) INIT_ObjectClass(EVNTSRC_KCLASS, pkclassprop) #ifdef HAS_RTXCss /* { */ /***************************/ /* Thread-level EventSource API */ /***************************/ #ifdef HAS_TS_ProcessEventSourceTick /* { */ MSABI KSRC TS_ProcessEventSourceTick(EVNTSRC evntsrc, TICKS ticks); #endif /* } HAS_TS_ProcessEventSourceTick */ #ifdef HAS_TS_DefEventSourceProp /* { */ MSABI void TS_DefEventSourceProp(EVNTSRC, const EVNTSRCPROP *); #endif /* } HAS_TS_DefEventSourceProp */ #ifdef HAS_TS_GetEventSourceProp /* { */ MSABI void TS_GetEventSourceProp(EVNTSRC, EVNTSRCPROP *); #endif /* } HAS_TS_GetEventSourceProp */ #ifdef HAS_TS_ClearEventSourceAttr /* { */ MSABI void TS_ClearEventSourceAttr(EVNTSRC, KATTRMASK); #endif /* } HAS_TS_ClearEventSourceAttr */ #ifdef HAS_TS_SetEventSourceAttr /* { */ MSABI void TS_SetEventSourceAttr(EVNTSRC, KATTRMASK); #endif /* } HAS_TS_SetEventSourceAttr */ #ifdef HAS_TS_GetEventSourceAcc /* { */ MSABI TICKS TS_GetEventSourceAcc(EVNTSRC); #endif /* } HAS_TS_GetEventSourceAcc */ #ifdef HAS_TS_SetEventSourceAcc /* { */ MSABI void TS_SetEventSourceAcc(EVNTSRC, TICKS); #endif /* } HAS_TS_SetEventSourceAcc */ #endif /* } HAS_RTXCss */ /***************************/ /* Interrupt-level EventSource API */ /***************************/ #ifdef HAS_IS_GetEventSourceAcc /* { */ MSABI TICKS IS_GetEventSourceAcc(EVNTSRC); #endif /* } HAS_IS_GetEventSourceAcc */ #ifdef HAS_IS_ProcessEventSourceTick /* { */ MSABI KSRC IS_ProcessEventSourceTick(EVNTSRC evntsrc, TICKS ticks); #endif /* } HAS_IS_ProcessEventSourceTick */ #endif /* } HAS_EventSources */ #ifdef HAS_Counters /* { */ /**********************/ /****** Counters ******/ /**********************/ #define INIT_CounterClassProp(pkclassprop) INIT_ObjectClass(COUNTER_KCLASS, pkclassprop) #ifdef HAS_RTXCss /* { */ /****************************/ /* Thread-level Counter API */ /****************************/ #ifdef HAS_TS_DefCounterProp /* { */ MSABI void TS_DefCounterProp(COUNTER, const COUNTERPROP *); #endif /* } HAS_TS_DefCounterProp */ #ifdef HAS_TS_GetCounterProp /* { */ MSABI void TS_GetCounterProp(COUNTER, COUNTERPROP *); #endif /* } HAS_TS_GetCounterProp */ #ifdef HAS_TS_GetElapsedCounterTicks /* { */ MSABI TICKS TS_GetElapsedCounterTicks(COUNTER, TICKS *); #endif /* } HAS_TS_GetElapsedCounterTicks */ #ifdef HAS_TS_SetCounterAcc /* { */ MSABI void TS_SetCounterAcc(COUNTER, TICKS); #endif /* } HAS_TS_SetCounterAcc */ #ifdef HAS_TS_GetCounterAcc /* { */ MSABI TICKS TS_GetCounterAcc(COUNTER); #endif /* } HAS_TS_GetCounterAcc */ #ifdef HAS_TS_SetCounterAttr /* { */ MSABI void TS_SetCounterAttr(COUNTER, KATTRMASK); #endif /* } HAS_TS_SetCounterAttr */ #ifdef HAS_TS_ClearCounterAttr /* { */ MSABI void TS_ClearCounterAttr(COUNTER, KATTRMASK); #endif /* } HAS_TS_ClearCounterAttr */ #endif /* } HAS_RTXCss */ /****************************/ /* Interrupt-level Counter API */ /****************************/ #ifdef HAS_IS_GetCounterAcc /* { */ MSABI TICKS IS_GetCounterAcc(COUNTER); #endif /* } HAS_IS_GetCounterAcc */ #endif /* } HAS_Counters */ #ifdef HAS_Alarms /* { */ /********************/ /****** Alarms ******/ /********************/ #define INIT_AlarmClassProp(pkclassprop) INIT_ObjectClass(ALARM_KCLASS, pkclassprop) #ifdef HAS_RTXCss /* { */ /**************************/ /* Thread-level Alarm API */ /**************************/ #ifdef HAS_TS_DefAlarmProp /* { */ MSABI void TS_DefAlarmProp(ALARM, const ALARMPROP *); #endif /* } HAS_TS_DefAlarmProp */ #ifdef HAS_TS_GetAlarmProp /* { */ MSABI void TS_GetAlarmProp(ALARM, ALARMPROP *); #endif /* } HAS_TS_GetAlarmProp */ #ifdef HAS_TS_DefAlarmAction /* { */ MSABI KSRC TS_DefAlarmAction(ALARM, ALARMACTION, THREAD); #endif /* } HAS_TS_DefAlarmAction */ #ifdef HAS_TS_DefAlarmActionArm /* { */ MSABI KSRC TS_DefAlarmActionArm(ALARM, ALARMACTION, THREAD); #endif /* } HAS_TS_DefAlarmActionArm */ #ifdef HAS_TS_ArmAlarm /* { */ MSABI KSRC TS_ArmAlarm(ALARM); #endif /* } HAS_TS_ArmAlarm */ #ifdef HAS_TS_RearmAlarm /* { */ MSABI TICKS TS_RearmAlarm(ALARM, TICKS, TICKS); #endif /* } HAS_TS_RearmAlarm */ #ifdef HAS_TS_AbortAlarm /* { */ MSABI TICKS TS_AbortAlarm(ALARM); #endif /* } HAS_TS_AbortAlarm */ #ifdef HAS_TS_CancelAlarm /* { */ MSABI TICKS TS_CancelAlarm(ALARM); #endif /* } HAS_TS_CancelAlarm */ #ifdef HAS_TS_GetAlarmTicks /* { */ MSABI TICKS TS_GetAlarmTicks(ALARM); #endif /* } HAS_TS_GetAlarmTicks */ #endif /* } HAS_RTXCss */ #endif /* } HAS_Alarms */ #ifdef HAS_Pipes /* { */ /*********************/ /****** Pipes ******/ /*********************/ #define INIT_PipeClassProp(pkclassprop) INIT_ObjectClass(PIPE_KCLASS, pkclassprop) #ifdef HAS_RTXCss /* { */ /*************************/ /* Thread-level Pipe API */ /*************************/ #ifdef HAS_TS_DefPipeProp /* { */ MSABI void TS_DefPipeProp(PIPE, const PIPEPROP *); #endif /* } HAS_TS_DefPipeProp */ #ifdef HAS_TS_GetPipeProp /* { */ MSABI void TS_GetPipeProp(PIPE, PIPEPROP *); #endif /* } HAS_TS_GetPipeProp */ #ifdef HAS_TS_GetPipeBufSize /* { */ MSABI int TS_GetPipeBufSize(PIPE); #endif /* } HAS_TS_GetPipeBufSize */ #ifdef HAS_TS_GetEmptyPipeBuf /* { */ MSABI void * TS_GetEmptyPipeBuf(PIPE); #endif /* } HAS_TS_GetEmptyPipeBuf */ #ifdef HAS_TS_PutFullPipeBuf /* { */ MSABI KSRC TS_PutFullPipeBuf(PIPE, void *, int); #endif /* } HAS_TS_PutFullPipeBuf */ #ifdef HAS_TS_GetFullPipeBuf /* { */ MSABI void * TS_GetFullPipeBuf(PIPE, int *); #endif /* } HAS_TS_GetFullPipeBuf */ #ifdef HAS_TS_PutEmptyPipeBuf /* { */ MSABI KSRC TS_PutEmptyPipeBuf(PIPE, void *); #endif /* } HAS_TS_PutEmptyPipeBuf */ #ifdef HAS_TS_PutFullGetEmptyPipeBuf /* { */ MSABI void * TS_PutFullGetEmptyPipeBuf(PIPE, void *, int, KSRC *); #endif /* } HAS_TS_PutFullGetEmptyPipeBuf */ #ifdef HAS_TS_PutEmptyGetFullPipeBuf /* { */ MSABI void * TS_PutEmptyGetFullPipeBuf(PIPE, void *, int *, KSRC *); #endif /* } HAS_TS_PutEmptyGetFullPipeBuf */ #ifdef HAS_TS_JamFullPipeBuf /* { */ MSABI KSRC TS_JamFullPipeBuf(PIPE, void *, int); #endif /* } HAS_TS_JamFullPipeBuf */ #ifdef HAS_TS_JamFullGetEmptyPipeBuf /* { */ MSABI void * TS_JamFullGetEmptyPipeBuf(PIPE, void *, int, KSRC *); #endif /* } HAS_TS_JamFullGetEmptyPipeBuf */ #ifdef HAS_TS_DefPipeAction /* { */ MSABI void TS_DefPipeAction(PIPE, PIPEACTION, THREAD, PIPECOND); #endif /* } HAS_TS_DefPipeAction */ #endif /* } HAS_RTXCss */ /****************************/ /* Interrupt-level Pipe API */ /****************************/ #ifdef HAS_IS_GetPipeBufSize /* { */ MSABI int IS_GetPipeBufSize(PIPE); #endif /* } HAS_IS_GetPipeBufSize */ #ifdef HAS_IS_GetEmptyPipeBuf /* { */ MSABI void * IS_GetEmptyPipeBuf(PIPE); #endif /* } HAS_IS_GetEmptyPipeBuf */ #ifdef HAS_IS_PutFullPipeBuf /* { */ MSABI KSRC IS_PutFullPipeBuf(PIPE, void *, int); #endif /* } HAS_IS_PutFullPipeBuf */ #ifdef HAS_IS_GetFullPipeBuf /* { */ MSABI void * IS_GetFullPipeBuf(PIPE, int *); #endif /* } HAS_IS_GetFullPipeBuf */ #ifdef HAS_IS_PutEmptyPipeBuf /* { */ MSABI KSRC IS_PutEmptyPipeBuf(PIPE, void *); #endif /* } HAS_IS_PutEmptyPipeBuf */ #ifdef HAS_IS_PutFullGetEmptyPipeBuf /* { */ MSABI void * IS_PutFullGetEmptyPipeBuf(PIPE, void *, int, KSRC *); #endif /* } HAS_IS_PutFullGetEmptyPipeBuf */ #ifdef HAS_IS_PutEmptyGetFullPipeBuf /* { */ MSABI void * IS_PutEmptyGetFullPipeBuf(PIPE, void *, int *, KSRC *); #endif /* } HAS_IS_PutEmptyGetFullPipeBuf */ #ifdef HAS_IS_JamFullPipeBuf /* { */ MSABI KSRC IS_JamFullPipeBuf(PIPE, void *, int); #endif /* } HAS_IS_JamFullPipeBuf */ #ifdef HAS_IS_JamFullGetEmptyPipeBuf /* { */ MSABI void * IS_JamFullGetEmptyPipeBuf(PIPE, void *, int, KSRC *); #endif /* } HAS_IS_JamFullGetEmptyPipeBuf */ #endif /* } HAS_Pipes */ #ifdef HAS_Exceptions /* { */ /********************/ /**** Exceptions ****/ /********************/ #define INIT_ExceptionClassProp(pkclassprop) INIT_ObjectClass(EXCPTN_KCLASS, pkclassprop) #ifdef HAS_RTXCss /* { */ /************************/ /* Thread-level Exception API */ /************************/ #ifdef HAS_TS_DefExceptionProp /* { */ MSABI void TS_DefExceptionProp(EXCPTN, const EXCPTNPROP *); #endif /* } HAS_TS_DefExceptionProp */ #ifdef HAS_TS_GetExceptionProp /* { */ MSABI void TS_GetExceptionProp(EXCPTN, EXCPTNPROP *); #endif /* } HAS_TS_GetExceptionProp */ #endif /* } HAS_RTXCss */ #endif /* } HAS_Exceptions */ /**********************/ /**** SPECIAL SVCS ****/ /**********************/ #ifdef HAS_RTXCss /* { */ /*****************************/ /* Thread-level SPECIAL SVCS */ /*****************************/ #ifdef HAS_TS_DefFatalErrorHandler /* { */ MSABI void TS_DefFatalErrorHandler(void (*)(FEPACKET *)); #endif /* } HAS_TS_DefFatalErrorHandler */ #ifdef HAS_TS_GetFatalErrorHandler /* { */ MSABI void (* TS_GetFatalErrorHandler(void))(FEPACKET *); #endif /* } HAS_TS_GetFatalErrorHandler */ #ifdef HAS_TS_AllocSysRAM /* { */ MSABI void * TS_AllocSysRAM(ksize_t); #endif /* } HAS_TS_AllocSysRAM */ #ifdef HAS_TS_GetFreeSysRAMSize /* { */ MSABI ksize_t TS_GetFreeSysRAMSize(void); #endif /* } HAS_TS_GetFreeSysRAMSize */ #endif /* } HAS_RTXCss */ /***************************/ /* RTXC Utility Prototypes */ /***************************/ #ifdef HAS_RAM_VECTORS /* { */ MSABI void setvect(int vector, void (*)(void)); #endif /* } HAS_RAM_VECTORS */ MSABI void (*getvect(int))(void); MSABI void setVBR(void (**f)(void)); MSABI void (**getVBR(void))(void); #ifdef __cplusplus /* { */ } #endif /* } __cplusplus */ #endif /* } _RTXCAPI_H */ /* end of file - rtxcapi.h */