Difference between revisions of "Unit Platform"

From Ultibo.org
Jump to: navigation, search
Line 248: Line 248:
 
----
 
----
  
''To be documented''
+
 
 +
'''Platform logging'''
 +
 
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>PLATFORM_DEFAULT_LOG_LEVEL:LongWord = PLATFORM_LOG_LEVEL_DEBUG;</code>
 +
| style="width: 65%;"|Minimum level for Platform messages. Only messages with level greater than or equal to this will be printed.
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>PLATFORM_LOG_ENABLED:Boolean;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
 
 +
'''IRQ logging'''
 +
 
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>IRQ_DEFAULT_LOG_LEVEL:LongWord = IRQ_LOG_LEVEL_INFO;</code>
 +
| style="width: 65%;"|Minimum level for IRQ messages. Only messages with level greater than or equal to this will be printed.
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>IRQ_LOG_ENABLED:Boolean;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
 +
'''FIQ logging'''
 +
 
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>FIQ_DEFAULT_LOG_LEVEL:LongWord = FIQ_LOG_LEVEL_INFO;</code>
 +
| style="width: 65%;"|Minimum level for FIQ messages. Only messages with level greater than or equal to this will be printed.
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>FIQ_LOG_ENABLED:Boolean;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
 
 +
'''SWI logging'''
 +
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>SWI_DEFAULT_LOG_LEVEL:LongWord = SWI_LOG_LEVEL_INFO;</code>
 +
| style="width: 65%;"|Minimum level for SWI messages. Only messages with level greater than or equal to this will be printed.
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>SWI_LOG_ENABLED:Boolean;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
 
 +
'''Platform specific variables'''
 +
 
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>PlatformInitialized:Boolean;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>CPUInitialized:Boolean;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>FPUInitialized:Boolean;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>GPUInitialized:Boolean;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>MMUInitialized:Boolean;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>SMPInitialized:Boolean;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>CacheInitialized:Boolean;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>BoardInitialized:Boolean;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>MemoryInitialized:Boolean;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>ClockInitialized:Boolean;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>PowerInitialized:Boolean;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>MailboxInitialized:Boolean;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>InterruptsInitialized:Boolean;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>PeripheralsInitialized:Boolean;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>ParseBootTagsCompleted:Boolean;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>ParseCommandLineCompleted:Boolean;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>ParseEnvironmentCompleted:Boolean;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
 
 +
'''Lock variables'''
 +
 
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>ClockLock:TPlatformLock;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>PowerLock:TPlatformLock;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>MailboxLock:TPlatformLock;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>ShutdownLock:TPlatformLock;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>InterruptLock:TPlatformLock;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>PageTableLock:TPlatformLock;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>VectorTableLock:TPlatformLock;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
 
 +
'''Semaphore variables'''
 +
 
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>ShutdownSemaphore:TPlatformSemaphore;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
 
 +
'''Clock variables'''
 +
 
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>ClockBase:Int64 = TIME_TICKS_TO_1899;</code>
 +
| style="width: 65%;"|The system time as of the last setting of the clock
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>ClockLast:LongWord;</code>
 +
| style="width: 65%;"|The timer value of the last clock tick
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>ClockTicks:LongWord;</code>
 +
| style="width: 65%;"|Current number of clock ticks (When this reaches CLOCK_TICKS_PER_SECOND then ClockSeconds is incremented and this is reset to zero)
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>ClockSeconds:LongWord;</code>
 +
| style="width: 65%;"|Current number of clock seconds (This forms the system clock)
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>ClockRTCInvalid:LongBool;</code>
 +
| style="width: 65%;"|True if available time from RTC is invalid
 +
|-
 +
|}
 +
 
 +
'''Utilization variables'''
 +
 
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>UtilizationLast:array of LongWord;</code>
 +
| style="width: 65%;"|The per CPU utilization for the last second (Allocated by scheduler initialization)
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>UtilizationCurrent:array of LongWord;</code>
 +
| style="width: 65%;"|The per CPU utilization for the current second (Updated by Idle thread and reset by Scheduler interrupt) (Allocated by scheduler initialization)
 +
|-
 +
|}
 +
 
 +
'''Initialization handlers'''
 +
 
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>CPUInitHandler:TCPUInit;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>FPUInitHandler:TFPUInit;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>GPUInitHandler:TGPUInit;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>MMUInitHandler:TMMUInit;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>SMPInitHandler:TSMPInit;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>CacheInitHandler:TCacheInit;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>BoardInitHandler:TBoardInit;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>MemoryInitHandler:TMemoryInit;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>ClockInitHandler:TClockInit;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>PowerInitHandler:TPowerInit;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>MailboxInitHandler:TMailboxInit;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>InterruptInitHandler:TInterruptInit;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>PeripheralInitHandler:TPeripheralInit;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>ParseBootTagsHandler:TParseBootTags;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>ParseCommandLineHandler:TParseCommandLine;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>ParseEnvironmentHandler:TParseEnvironment;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
 
 +
'''Blink/Output handlers'''
 +
 
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>BootBlinkHandler:TBootBlink;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>BootOutputHandler:TBootOutput;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
 
 +
'''LED handlers'''
 +
 
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>PowerLEDEnableHandler:TPowerLEDEnable;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>PowerLEDOnHandler:TPowerLEDOn;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>PowerLEDOffHandler:TPowerLEDOff;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>ActivityLEDEnableHandler:TActivityLEDEnable;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>ActivityLEDOnHandler:TActivityLEDOn;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>ActivityLEDOffHandler:TActivityLEDOff;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
 
 +
'''Counter handlers'''
 +
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>CounterAvailableHandler:TCounterAvailable;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>CounterReadHandler:TCounterRead;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>CounterRead64Handler:TCounterRead64;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>CounterWaitHandler:TCounterWait;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>CounterEventHandler:TCounterEvent;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>CounterCancelHandler:TCounterCancel;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>CounterGetRateHandler:TCounterGetRate;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>CounterSetRateHandler:TCounterSetRate;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>CounterGetIntervalHandler:TCounterGetInterval;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>CounterSetIntervalHandler:TCounterSetInterval;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
 
 +
'''Mailbox handlers'''
 +
 
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>MailboxReceiveHandler:TMailboxReceive;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>MailboxSendHandler:TMailboxSend;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>MailboxCallHandler:TMailboxCall;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>MailboxCallExHandler:TMailboxCallEx;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>MailboxPropertyCallHandler:TMailboxPropertyCall;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>MailboxPropertyCallExHandler:TMailboxPropertyCallEx;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
 
 +
'''Random handlers'''
 +
 
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>RandomAvailableHandler:TRandomAvailable;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>RandomSeedHandler:TRandomSeed;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>RandomReadLongIntHandler:TRandomReadLongInt;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>RandomReadInt64Handler:TRandomReadInt64;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>RandomReadExtendedHandler:TRandomReadExtended;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
 
 +
'''Watchdog handlers'''
 +
 
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>WatchdogAvailableHandler:TWatchdogAvailable;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>WatchdogStartHandler:TWatchdogStart;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>WatchdogStopHandler:TWatchdogStop;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>WatchdogRefreshHandler:TWatchdogRefresh;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
 
 +
'''Interrupt request (IRQ) handlers'''
 +
 
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>RequestIRQHandler:TRequestIRQ;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>ReleaseIRQHandler:TReleaseIRQ;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>RequestExIRQHandler:TRequestExIRQ;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>ReleaseExIRQHandler:TReleaseExIRQ;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
 
 +
'''Fast interrupt request (FIQ) handlers'''
 +
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>RequestFIQHandler:TRequestFIQ;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>ReleaseFIQHandler:TReleaseFIQ;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>RequestExFIQHandler:TRequestExFIQ;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>ReleaseExFIQHandler:TReleaseExFIQ;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
 
 +
'''System call (software interrupt or SWI) handlers'''
 +
 
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>SystemCallHandler:TSystemCall;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>RegisterSystemCallHandler:TRegisterSystemCall;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>DeregisterSystemCallHandler:TDeregisterSystemCall;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>RegisterSystemCallExHandler:TRegisterSystemCallEx;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>DeregisterSystemCallExHandler:TDeregisterSystemCallEx;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
 +
'''Interrupt entry handlers'''
 +
 
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>GetInterruptCountHandler:TGetInterruptCount;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>GetInterruptStartHandler:TGetInterruptStart;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>GetInterruptEntryHandler:TGetInterruptEntry;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
 +
'''Local interrupt entry handlers'''
 +
 
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>GetLocalInterruptCountHandler:TGetLocalInterruptCount;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>GetLocalInterruptStartHandler:TGetLocalInterruptStart;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>GetLocalInterruptEntryHandler:TGetLocalInterruptEntry;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
 +
'''System call entry handlers'''
 +
 
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>GetSystemCallCountHandler:TGetSystemCallCount;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>GetSystemCallEntryHandler:TGetSystemCallEntry;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
 
 +
'''System handlers'''
 +
 
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>SystemRestartHandler:TSystemRestart;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>SystemShutdownHandler:TSystemShutdown;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>SystemGetUptimeHandler:TSystemGetUptime;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>SystemGetCommandLineHandler:TSystemGetCommandLine;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>SystemGetEnvironmentHandler:TSystemGetEnvironment;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
 
 +
'''CPU handlers'''
 +
 
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>CPUGetArchHandler:TCPUGetArch;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>CPUGetTypeHandler:TCPUGetType;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>CPUGetBootHandler:TCPUGetBoot;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>CPUGetMaskHandler:TCPUGetMask;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>CPUGetCountHandler:TCPUGetCount;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>CPUGetModeHandler:TCPUGetMode;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>CPUGetStateHandler:TCPUGetState;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>CPUGetCurrentHandler:TCPUGetCurrent;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>CPUGetMemoryHandler:TCPUGetMemory;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>CPUGetPercentageHandler:TCPUGetPercentage;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>CPUGetUtilizationHandler:TCPUGetUtilization;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>CPUGetModelHandler:TCPUGetModel;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>CPUGetRevisionHandler:TCPUGetRevision;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>CPUGetDescriptionHandler:TCPUGetDescription;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
 
 +
'''FPU handlers'''
 +
 
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>FPUGetTypeHandler:TFPUGetType;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>FPUGetStateHandler:TFPUGetState;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
 
 +
'''GPU handlers'''
 +
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>GPUGetTypeHandler:TGPUGetType;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>GPUGetStateHandler:TGPUGetState;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>GPUGetMemoryHandler:TGPUGetMemory;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
 
 +
'''Cache handlers'''
 +
 
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>L1CacheGetTypeHandler:TL1CacheGetType;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>L1DataCacheGetSizeHandler:TL1DataCacheGetSize;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>L1DataCacheGetLineSizeHandler:TL1DataCacheGetLineSize;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>L1InstructionCacheGetSizeHandler:TL1InstructionCacheGetSize;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>L1InstructionCacheGetLineSizeHandler:TL1InstructionCacheGetLineSize;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>L2CacheGetTypeHandler:TL2CacheGetType;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>L2CacheGetSizeHandler:TL2CacheGetSize;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>L2CacheGetLineSizeHandler:TL2CacheGetLineSize;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
 
 +
'''Board handlers'''
 +
 
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>BoardGetTypeHandler:TBoardGetType;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>BoardGetModelHandler:TBoardGetModel;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>BoardGetSerialHandler:TBoardGetSerial;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>BoardGetRevisionHandler:TBoardGetRevision;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>BoardGetMACAddressHandler:TBoardGetMACAddress;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
 
 +
'''Firmware handlers'''
 +
 
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>FirmwareGetRevisionHandler:TFirmwareGetRevision;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
 
 +
'''Machine handlers'''
 +
 
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>MachineGetTypeHandler:TMachineGetType;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
 
 +
'''Memory handlers'''
 +
 
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>MemoryGetBaseHandler:TMemoryGetBase;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>MemoryGetSizeHandler:TMemoryGetSize;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>MemoryGetPageSizeHandler:TMemoryGetPageSize;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>MemoryGetLargePageSizeHandler:TMemoryGetLargePageSize;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
 
 +
'''Power handlers'''
 +
 
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>PowerGetWaitHandler:TPowerGetWait;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>PowerGetStateHandler:TPowerGetState;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>PowerSetStateHandler:TPowerSetState;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
 
 +
'''Clock handlers'''
 +
 
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>ClockGetCountHandler:TClockGetCount;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>ClockGetTotalHandler:TClockGetTotal;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>ClockUpdateOffsetHandler:TClockUpdateOffset;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>ClockGetRateHandler:TClockGetRate;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>ClockSetRateHandler:TClockSetRate;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>ClockGetStateHandler:TClockGetState;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>ClockSetStateHandler:TClockSetState;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>ClockGetMinRateHandler:TClockGetMinRate;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>ClockGetMaxRateHandler:TClockGetMaxRate;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
 
 +
'''Turbo handlers'''
 +
 
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>TurboGetStateHandler:TTurboGetState;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>TurboSetStateHandler:TTurboSetState;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
 
 +
'''Voltage handlers'''
 +
 
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>VoltageGetValueHandler:TVoltageGetValue;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>VoltageSetValueHandler:TVoltageSetValue;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>VoltageGetMinValueHandler:TVoltageGetMinValue;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>VoltageGetMaxValueHandler:TVoltageGetMaxValue;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
 
 +
'''Temperature handlers'''
 +
 
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>TemperatureGetCurrentHandler:TTemperatureGetCurrent;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>TemperatureGetMaximumHandler:TTemperatureGetMaximum;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
 
 +
'''GPU memory handlers'''
 +
 
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>GPUMemoryAllocateHandler:TGPUMemoryAllocate;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>GPUMemoryReleaseHandler:TGPUMemoryRelease;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>GPUMemoryLockHandler:TGPUMemoryLock;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>GPUMemoryUnlockHandler:TGPUMemoryUnlock;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
 
 +
'''GPU misc handlers'''
 +
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>GPUExecuteCodeHandler:TGPUExecuteCode;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>DispmanxHandleGetHandler:TDispmanxHandleGet;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>EDIDBlockGetHandler:TEDIDBlockGet;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
 
 +
'''Framebuffer handlers'''
 +
 
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>FramebufferAvailableHandler:TFramebufferAvailable;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>FramebufferAllocateHandler:TFramebufferAllocate;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>FramebufferReleaseHandler:TFramebufferRelease;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>FramebufferSetStateHandler:TFramebufferSetState;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>FramebufferGetDimensionsHandler:TFramebufferGetDimensions;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>FramebufferGetPhysicalHandler:TFramebufferGetPhysical;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>FramebufferSetPhysicalHandler:TFramebufferSetPhysical;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>FramebufferTestPhysicalHandler:TFramebufferTestPhysical;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>FramebufferGetVirtualHandler:TFramebufferGetVirtual;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>FramebufferSetVirtualHandler:TFramebufferSetVirtual;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>FramebufferTestVirtualHandler:TFramebufferTestVirtual;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>FramebufferGetDepthHandler:TFramebufferGetDepth;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>FramebufferSetDepthHandler:TFramebufferSetDepth;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>FramebufferTestDepthHandler:TFramebufferTestDepth;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>FramebufferGetPixelOrderHandler:TFramebufferGetPixelOrder;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>FramebufferSetPixelOrderHandler:TFramebufferSetPixelOrder;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>FramebufferTestPixelOrderHandler:TFramebufferTestPixelOrder;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>FramebufferGetAlphaModeHandler:TFramebufferGetAlphaMode;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>FramebufferSetAlphaModeHandler:TFramebufferSetAlphaMode;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>FramebufferTestAlphaModeHandler:TFramebufferTestAlphaMode;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>FramebufferGetPitchHandler:TFramebufferGetPitch;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>FramebufferGetOffsetHandler:TFramebufferGetOffset;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>FramebufferSetOffsetHandler:TFramebufferSetOffset;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>FramebufferTestOffsetHandler:TFramebufferTestOffset;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>FramebufferGetOverscanHandler:TFramebufferGetOverscan;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>FramebufferSetOverscanHandler:TFramebufferSetOverscan;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>FramebufferTestOverscanHandler:TFramebufferTestOverscan;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>FramebufferGetPaletteHandler:TFramebufferGetPalette;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>FramebufferSetPaletteHandler:TFramebufferSetPalette;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>FramebufferTestPaletteHandler:TFramebufferTestPalette;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>FramebufferTestVsyncHandler:TFramebufferTestVsync;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>FramebufferSetVsyncHandler:TFramebufferSetVsync;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>FramebufferSetBacklightHandler:TFramebufferSetBacklight;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
 
 +
Cursor handlers'''
 +
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>CursorSetDefaultHandler:TCursorSetDefault;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>CursorSetInfoHandler:TCursorSetInfo;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>CursorSetStateHandler:TCursorSetState;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
 +
'''Touch handlers'''
 +
 
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>TouchGetBufferHandler:TTouchGetBuffer;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
 
 +
'''DMA handlers'''
 +
 
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>DMAAvailableHandler:TDMAAvailable;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>DMATransferHandler:TDMATransfer;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>DMAFillMemoryHandler:TDMAFillMemory;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>DMACopyMemoryHandler:TDMACopyMemory;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>DMAReadPeripheralHandler:TDMAReadPeripheral;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>DMAWritePeripheralHandler:TDMAWritePeripheral;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>DMAAllocateBufferHandler:TDMAAllocateBuffer;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>DMAAllocateBufferExHandler:TDMAAllocateBufferEx;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>DMAReleaseBufferHandler:TDMAReleaseBuffer;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>DMAGetChannelsHandler:TDMAGetChannels;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
 
 +
'''GPIO handlers'''
 +
 
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>GPIOAvailableHandler:TGPIOAvailable;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>GPIOReadHandler:TGPIORead;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>GPIOWriteHandler:TGPIOWrite;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>GPIOInputGetHandler:TGPIOInputGet;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>GPIOInputWaitHandler:TGPIOInputWait;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>GPIOInputEventHandler:TGPIOInputEvent;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>GPIOOutputSetHandler:TGPIOOutputSet;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>GPIOPullGetHandler:TGPIOPullGet;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>GPIOPullSelectHandler:TGPIOPullSelect;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>GPIOFunctionGetHandler:TGPIOFunctionGet;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>GPIOFunctionSelectHandler:TGPIOFunctionSelect;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
 
 +
'''Virtual GPIO handlers'''
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>VirtualGPIOInputGetHandler:TVirtualGPIOInputGet;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>VirtualGPIOOutputSetHandler:TVirtualGPIOOutputSet;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>VirtualGPIOFunctionSelectHandler:TVirtualGPIOFunctionSelect;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
 
 +
'''SPI handlers'''
 +
 
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>SPIAvailableHandler:TSPIAvailable;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>SPIStartHandler:TSPIStart;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>SPIStopHandler:TSPIStop;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>SPIReadHandler:TSPIRead;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>SPIWriteHandler:TSPIWrite;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>SPIWriteReadHandler:TSPIWriteRead;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>SPIGetModeHandler:TSPIGetMode;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>SPISetModeHandler:TSPISetMode;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>SPIGetClockRateHandler:TSPIGetClockRate;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>SPISetClockRateHandler:TSPISetClockRate;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>SPIGetClockPhaseHandler:TSPIGetClockPhase;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>SPISetClockPhaseHandler:TSPISetClockPhase;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>SPIGetClockPolarityHandler:TSPIGetClockPolarity;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>SPISetClockPolarityHandler:TSPISetClockPolarity;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>SPIGetSelectPolarityHandler:TSPIGetSelectPolarity;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>SPISetSelectPolarityHandler:TSPISetSelectPolarity;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
 
 +
'''I2C handlers'''
 +
 
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>I2CAvailableHandler:TI2CAvailable;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>I2CStartHandler:TI2CStart;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>I2CStopHandler:TI2CStop;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>I2CReadHandler:TI2CRead;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>I2CWriteHandler:TI2CWrite;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>I2CWriteReadHandler:TI2CWriteRead;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>I2CWriteWriteHandler:TI2CWriteWrite;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>I2CGetRateHandler:TI2CGetRate;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>I2CSetRateHandler:TI2CSetRate;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>I2CGetAddressHandler:TI2CGetAddress;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>I2CSetAddressHandler:TI2CSetAddress;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
 
 +
'''PWM handlers'''
 +
 
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>PWMAvailableHandler:TPWMAvailable;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>PWMStartHandler:TPWMStart;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>PWMStopHandler:TPWMStop;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>PWMWriteHandler:TPWMWrite;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>PWMSetModeHandler:TPWMSetMode;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>PWMSetRangeHandler:TPWMSetRange;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>PWMSetFrequencyHandler:TPWMSetFrequency;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>PWMConfigureHandler:TPWMConfigure;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
 
 +
'''RTC handlers'''
 +
 
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>RTCAvailableHandler:TRTCAvailable;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>RTCGetTimeHandler:TRTCGetTime;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>RTCSetTimeHandler:TRTCSetTime;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
 
 +
'''Serial handlers'''
 +
 
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>SerialAvailableHandler:TSerialAvailable;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>SerialOpenHandler:TSerialOpen;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>SerialCloseHandler:TSerialClose;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>SerialReadHandler:TSerialRead;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>SerialWriteHandler:TSerialWrite;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
 
 +
'''Peripheral handlers'''
 +
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>PeripheralGetBaseHandler:TPeripheralGetBase;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>PeripheralGetSizeHandler:TPeripheralGetSize;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>PeripheralReadHandler:TPeripheralRead;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>PeripheralWriteHandler:TPeripheralWrite;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>LocalPeripheralGetBaseHandler:TLocalPeripheralGetBase;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>LocalPeripheralGetSizeHandler:TLocalPeripheralGetSize;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
 
 +
'''GetSP/PC handlers'''
 +
 
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>GetSPHandler:TGetSP;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>GetPCHandler:TGetPC;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
 
 +
'''Enable/Disable/Save/RestoreIRQ/FIQ handlers'''
 +
 
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>GetIRQHandler:TGetIRQ;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>EnableIRQHandler:TEnableIRQ;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>DisableIRQHandler:TDisableIRQ;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>SaveIRQHandler:TSaveIRQ;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>RestoreIRQHandler:TRestoreIRQ;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>GetFIQHandler:TGetFIQ;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>EnableFIQHandler:TEnableFIQ;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>DisableFIQHandler:TDisableFIQ;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>SaveFIQHandler:TSaveFIQ;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>RestoreFIQHandler:TRestoreFIQ;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>EnableIRQFIQHandler:TEnableIRQFIQ;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>DisableIRQFIQHandler:TDisableIRQFIQ;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>SaveIRQFIQHandler:TSaveIRQFIQ;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>RestoreIRQFIQHandler:TRestoreIRQFIQ;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>GetAbortHandler:TGetAbort;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>EnableAbortHandler:TEnableAbort;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>DisableAbortHandler:TDisableAbort;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>SaveAbortHandler:TSaveAbort;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>RestoreAbortHandler:TRestoreAbort;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
 +
'''Halt/Pause handlers'''
 +
 
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>HaltHandler:THalt;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>PauseHandler:TPause;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
 
 +
'''HaltThread handlers'''
 +
 
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>HaltThreadHandler:THaltThread;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
 
 +
'''SendEvent/WaitForEvent/Interrupt handlers'''
 +
 
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>SendEventHandler:TSendEvent;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>WaitForEventHandler:TWaitForEvent;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>WaitForInterruptHandler:TWaitForInterrupt;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
 
 +
'''Barrier handlers'''
 +
 
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>ReadMemoryBarrierHandler:TReadMemoryBarrier;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>WriteMemoryBarrierHandler:TWriteMemoryBarrier;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>DataMemoryBarrierHandler:TDataMemoryBarrier;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>DataSynchronizationBarrierHandler:TDataSynchronizationBarrier;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>InstructionMemoryBarrierHandler:TInstructionMemoryBarrier;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
 
 +
'''TLB handlers'''
 +
 
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>InvalidateTLBHandler:TInvalidateTLB;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>InvalidateDataTLBHandler:TInvalidateDataTLB;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>InvalidateInstructionTLBHandler:TInvalidateInstructionTLB;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
 
 +
'''Cache handlers'''
 +
 
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>InvalidateCacheHandler:TInvalidateCache;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>CleanDataCacheHandler:TCleanDataCache;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>InvalidateDataCacheHandler:TInvalidateDataCache;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>CleanAndInvalidateDataCacheHandler:TCleanAndInvalidateDataCache;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>InvalidateInstructionCacheHandler:TInvalidateInstructionCache;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>CleanDataCacheRangeHandler:TCleanDataCacheRange;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>InvalidateDataCacheRangeHandler:TInvalidateDataCacheRange;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>CleanAndInvalidateDataCacheRangeHandler:TCleanAndInvalidateDataCacheRange;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>InvalidateInstructionCacheRangeHandler:TInvalidateInstructionCacheRange;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
 
 +
'''Prefetch buffer handlers'''
 +
 
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>FlushPrefetchBufferHandler:TFlushPrefetchBuffer;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
 
 +
'''Branch target cache handlers'''
 +
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>FlushBranchTargetCacheHandler:TFlushBranchTargetCache;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
 
 +
'''ContextSwitch handlers'''
 +
 
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>ContextSwitchHandler:TContextSwitch;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>ContextSwitchIRQHandler:TContextSwitchIRQ;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>ContextSwitchFIQHandler:TContextSwitchFIQ;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>ContextSwitchSWIHandler:TContextSwitchSWI;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
 
 +
'''And/Xor/Or/Increment/Decrement/Exchange handlers'''
 +
 
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>InterlockedOrHandler:TInterlockedOr;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>InterlockedXorHandler:TInterlockedXor;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>InterlockedAndHandler:TInterlockedAnd;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>InterlockedDecrementHandler:TInterlockedDecrement;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>InterlockedIncrementHandler:TInterlockedIncrement;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>InterlockedExchangeHandler:TInterlockedExchange;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>InterlockedAddExchangeHandler:TInterlockedAddExchange;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>InterlockedCompareExchangeHandler:TInterlockedCompareExchange;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
 
 +
'''PageTable handlers'''
 +
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>PageTableGetBaseHandler:TPageTableGetBase;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>PageTableGetSizeHandler:TPageTableGetSize;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>PageTableGetEntryHandler:TPageTableGetEntry; </code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>PageTableSetEntryHandler:TPageTableSetEntry;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
 
 +
'''PageTables handlers'''
 +
 
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>PageTablesGetAddressHandler:TPageTablesGetAddress;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>PageTablesGetLengthHandler:TPageTablesGetLength;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>PageTablesGetCountHandler:TPageTablesGetCount;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>PageTablesGetShiftHandler:TPageTablesGetShift;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>PageTablesGetNextHandler:TPageTablesGetNext;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>PageTablesGetUsedHandler:TPageTablesGetUsed;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>PageTablesGetFreeHandler:TPageTablesGetFree;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
 
 +
'''VectorTable handlers'''
 +
 
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>VectorTableGetBaseHandler:TVectorTableGetBase;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>VectorTableGetSizeHandler:TVectorTableGetSize;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>VectorTableGetCountHandler:TVectorTableGetCount;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>VectorTableGetEntryHandler:TVectorTableGetEntry;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>VectorTableSetEntryHandler:TVectorTableSetEntry;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
 
 +
'''FirstBitSet handler'''
 +
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>FirstBitSetHandler:TFirstBitSet;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
 
 +
'''CountLeadingZeros handlers'''
 +
 
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>CountLeadingZerosHandler:TCountLeadingZeros;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
 +
'''Console handlers'''
 +
 
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>ConsoleGetKeyHandler:TConsoleGetKey;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>ConsolePeekKeyHandler:TConsolePeekKey;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>ConsoleWriteCharHandler:TConsoleWriteChar;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>ConsoleReadCharHandler:TConsoleReadChar;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>ConsoleReadWideCharHandler:TConsoleReadWideChar;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>ConsoleHideMouseHandler:TConsoleHideMouse;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>ConsoleShowMouseHandler:TConsoleShowMouse;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>ConsoleReadMouseHandler:TConsoleReadMouse;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
 
 +
'''CodePage handlers'''
 +
 
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>CodePageToWideCharHandler:TCodePageToWideChar;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>Variable</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
 
 +
'''Name handlers'''
 +
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>HostGetNameHandler:THostGetName;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>HostSetNameHandler:THostSetName;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>HostGetDomainHandler:THostGetDomain;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>HostSetDomainHandler:THostSetDomain;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
 +
'''Logging handlers'''
 +
 
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>LoggingOutputHandler:TLoggingOutput;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>LoggingOutputExHandler:TLoggingOutputEx;</code>
 +
| style="width: 65%;"|
 +
|-
 +
|}
 +
<br />
  
 
=== Function declarations ===
 
=== Function declarations ===

Revision as of 05:24, 5 January 2017

Return to Unit Reference


Description


Ultibo Platform interface unit

To be documented

Constants



DMA data flag constants DMA_DATA_FLAG_*
DMA_DATA_FLAG_NONE = $00000000;  
DMA_DATA_FLAG_STRIDE = $00000001; Transfer from the source to the destination using 2D stride (If supported)
DMA_DATA_FLAG_SOURCE_NOINCREMENT = $00000002; Don't increment the source address during the DMA request (If supported)
DMA_DATA_FLAG_DEST_NOINCREMENT = $00000004; Don't increment the dest address during the DMA request (If supported)
DMA_DATA_FLAG_SOURCE_DREQ = $00000008; Use DREQ gating on the source address during the DMA request (If supported)
DMA_DATA_FLAG_DEST_DREQ = $00000010; Use DREQ gating on the dest address during the DMA request (If supported)
DMA_DATA_FLAG_SOURCE_WIDE = $00000020; Use wide reads on the source address during the DMA request (If supported)
DMA_DATA_FLAG_DEST_WIDE = $00000040; Use wide writes on the dest address during the DMA request (If supported)
DMA_DATA_FLAG_NOREAD = $00000080; Ignore the source address and zero fill the destination (If supported)
DMA_DATA_FLAG_NOWRITE = $00000100; Ignore the dest address and cache fill from the source (If supported)
DMA_DATA_FLAG_NOCLEAN = $00000200; Do not perform cache clean on the source address (If applicable)
DMA_DATA_FLAG_NOINVALIDATE = $00000400; Do not perform cache invalidate on the dest address (If applicable)
DMA_DATA_FLAG_BULK = $00000800; Perform a bulk transfer (If applicable)


Page table flag constants PAGE_TABLE_FLAG_*
PAGE_TABLE_FLAG_NONE = $00000000;  
Reserved 0x00000001 (Previously used incorrectly for PAGE_TABLE_FLAG_NONE)
PAGE_TABLE_FLAG_NORMAL = $00000002; Page Table Entry represents Normal memory
PAGE_TABLE_FLAG_DEVICE = $00000004; Page Table Entry represents Device memory
PAGE_TABLE_FLAG_ORDERED = $00000008; Page Table Entry represents Ordered memory
PAGE_TABLE_FLAG_SHARED = $00000010; Page Table Entry represents Shared memory
PAGE_TABLE_FLAG_CACHEABLE = $00000020; Page Table Entry represents Cacheable memory
PAGE_TABLE_FLAG_READONLY = $00000040; Page Table Entry represents Read Only memory
PAGE_TABLE_FLAG_READWRITE = $00000080; Page Table Entry represents Read Write memory
PAGE_TABLE_FLAG_EXECUTABLE = $00000100; Page Table Entry represents Executable memory
PAGE_TABLE_FLAG_WRITEBACK = $00000200; Page Table Entry is Writeback Cacheable memory
PAGE_TABLE_FLAG_WRITETHROUGH = $00000400; Page Table Entry is Writethrough Cacheable memory
PAGE_TABLE_FLAG_WRITEALLOCATE = $00000800; Page Table Entry is Writeallocate Cacheable memory


Vector table entry constants VECTOR_TABLE_ENTRY_*
ARM
VECTOR_TABLE_ENTRY_ARM_RESET = 0; ARM Reset Vector
VECTOR_TABLE_ENTRY_ARM_UNDEFINED = 1; ARM Undefined Vector
VECTOR_TABLE_ENTRY_ARM_SWI = 2; ARM Software Interrupt (SWI) Vector
VECTOR_TABLE_ENTRY_ARM_PREFETCH = 3; ARM Prefetch Abort Vector
VECTOR_TABLE_ENTRY_ARM_ABORT = 4; ARM Data Abort Vector
VECTOR_TABLE_ENTRY_ARM_RESERVED = 5; ARM Reserved Vector
VECTOR_TABLE_ENTRY_ARM_IRQ = 6; ARM IRQ Vector
VECTOR_TABLE_ENTRY_ARM_FIQ = 7; ARM FIQ Vector
AARCH64


Exception type constants EXCEPTION_TYPE_*
EXCEPTION_TYPE_DATA_ABORT = 1;  
EXCEPTION_TYPE_PREFETCH_ABORT = 2;  
EXCEPTION_TYPE_UNDEFINED_INSTRUCTION = 3;  


Platform logging constants PLATFORM_LOG_LEVEL_*
PLATFORM_LOG_LEVEL_DEBUG = LOG_LEVEL_DEBUG; Platform debugging messages
PLATFORM_LOG_LEVEL_INFO = LOG_LEVEL_INFO; Platform informational messages
PLATFORM_LOG_LEVEL_ERROR = LOG_LEVEL_ERROR; Platform error messages
PLATFORM_LOG_LEVEL_NONE = LOG_LEVEL_NONE; No Platform messages


IRQ logging constants IRQ_LOG_LEVEL_*
IRQ_LOG_LEVEL_DEBUG = LOG_LEVEL_DEBUG; IRQ debugging messages
IRQ_LOG_LEVEL_INFO = LOG_LEVEL_INFO; IRQ informational messages
IRQ_LOG_LEVEL_ERROR = LOG_LEVEL_ERROR; IRQ error messages
IRQ_LOG_LEVEL_NONE = LOG_LEVEL_NONE; No IRQ messages


FIQ logging constants FIQ_LOG_LEVEL_*
FIQ_LOG_LEVEL_DEBUG = LOG_LEVEL_DEBUG; FIQ debugging messages
FIQ_LOG_LEVEL_INFO = LOG_LEVEL_INFO; FIQ informational messages
FIQ_LOG_LEVEL_ERROR = LOG_LEVEL_ERROR; FIQ error messages
FIQ_LOG_LEVEL_NONE = LOG_LEVEL_NONE; No FIQ messages


SWI logging constants SWI_LOG_LEVEL_*
DEBUG = LOG_LEVEL_DEBUG; SWI debugging messages
SWI_LOG_LEVEL_INFO = LOG_LEVEL_INFO; SWI informational messages
SWI_LOG_LEVEL_ERROR = LOG_LEVEL_ERROR; SWI error messages
SWI_LOG_LEVEL_NONE = LOG_LEVEL_NONE; No SWI messages


Type definitions


To be documented

Public variables



Platform logging

PLATFORM_DEFAULT_LOG_LEVEL:LongWord = PLATFORM_LOG_LEVEL_DEBUG; Minimum level for Platform messages. Only messages with level greater than or equal to this will be printed.
PLATFORM_LOG_ENABLED:Boolean;

IRQ logging

IRQ_DEFAULT_LOG_LEVEL:LongWord = IRQ_LOG_LEVEL_INFO; Minimum level for IRQ messages. Only messages with level greater than or equal to this will be printed.
IRQ_LOG_ENABLED:Boolean;

FIQ logging

FIQ_DEFAULT_LOG_LEVEL:LongWord = FIQ_LOG_LEVEL_INFO; Minimum level for FIQ messages. Only messages with level greater than or equal to this will be printed.
FIQ_LOG_ENABLED:Boolean;

SWI logging

SWI_DEFAULT_LOG_LEVEL:LongWord = SWI_LOG_LEVEL_INFO; Minimum level for SWI messages. Only messages with level greater than or equal to this will be printed.
SWI_LOG_ENABLED:Boolean;

Platform specific variables

PlatformInitialized:Boolean;
CPUInitialized:Boolean;
FPUInitialized:Boolean;
GPUInitialized:Boolean;
MMUInitialized:Boolean;
SMPInitialized:Boolean;
CacheInitialized:Boolean;
BoardInitialized:Boolean;
MemoryInitialized:Boolean;
ClockInitialized:Boolean;
PowerInitialized:Boolean;
MailboxInitialized:Boolean;
InterruptsInitialized:Boolean;
PeripheralsInitialized:Boolean;
ParseBootTagsCompleted:Boolean;
ParseCommandLineCompleted:Boolean;
ParseEnvironmentCompleted:Boolean;

Lock variables

ClockLock:TPlatformLock;
PowerLock:TPlatformLock;
MailboxLock:TPlatformLock;
ShutdownLock:TPlatformLock;
InterruptLock:TPlatformLock;
PageTableLock:TPlatformLock;
VectorTableLock:TPlatformLock;

Semaphore variables

ShutdownSemaphore:TPlatformSemaphore;

Clock variables

ClockBase:Int64 = TIME_TICKS_TO_1899; The system time as of the last setting of the clock
ClockLast:LongWord; The timer value of the last clock tick
ClockTicks:LongWord; Current number of clock ticks (When this reaches CLOCK_TICKS_PER_SECOND then ClockSeconds is incremented and this is reset to zero)
ClockSeconds:LongWord; Current number of clock seconds (This forms the system clock)
ClockRTCInvalid:LongBool; True if available time from RTC is invalid

Utilization variables

UtilizationLast:array of LongWord; The per CPU utilization for the last second (Allocated by scheduler initialization)
UtilizationCurrent:array of LongWord; The per CPU utilization for the current second (Updated by Idle thread and reset by Scheduler interrupt) (Allocated by scheduler initialization)

Initialization handlers

CPUInitHandler:TCPUInit;
FPUInitHandler:TFPUInit;
GPUInitHandler:TGPUInit;
MMUInitHandler:TMMUInit;
SMPInitHandler:TSMPInit;
CacheInitHandler:TCacheInit;
BoardInitHandler:TBoardInit;
MemoryInitHandler:TMemoryInit;
ClockInitHandler:TClockInit;
PowerInitHandler:TPowerInit;
MailboxInitHandler:TMailboxInit;
InterruptInitHandler:TInterruptInit;
PeripheralInitHandler:TPeripheralInit;
ParseBootTagsHandler:TParseBootTags;
ParseCommandLineHandler:TParseCommandLine;
ParseEnvironmentHandler:TParseEnvironment;

Blink/Output handlers

BootBlinkHandler:TBootBlink;
BootOutputHandler:TBootOutput;

LED handlers

PowerLEDEnableHandler:TPowerLEDEnable;
PowerLEDOnHandler:TPowerLEDOn;
PowerLEDOffHandler:TPowerLEDOff;
ActivityLEDEnableHandler:TActivityLEDEnable;
ActivityLEDOnHandler:TActivityLEDOn;
ActivityLEDOffHandler:TActivityLEDOff;

Counter handlers

CounterAvailableHandler:TCounterAvailable;
CounterReadHandler:TCounterRead;
CounterRead64Handler:TCounterRead64;
CounterWaitHandler:TCounterWait;
CounterEventHandler:TCounterEvent;
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"

|- | CounterCancelHandler:TCounterCancel; | style="width: 65%;"| |- |}

CounterGetRateHandler:TCounterGetRate;
CounterSetRateHandler:TCounterSetRate;
CounterGetIntervalHandler:TCounterGetInterval;
CounterSetIntervalHandler:TCounterSetInterval;

Mailbox handlers

MailboxReceiveHandler:TMailboxReceive;
MailboxSendHandler:TMailboxSend;
MailboxCallHandler:TMailboxCall;
MailboxCallExHandler:TMailboxCallEx;
MailboxPropertyCallHandler:TMailboxPropertyCall;
MailboxPropertyCallExHandler:TMailboxPropertyCallEx;

Random handlers

RandomAvailableHandler:TRandomAvailable;
RandomSeedHandler:TRandomSeed;
RandomReadLongIntHandler:TRandomReadLongInt;
RandomReadInt64Handler:TRandomReadInt64;
RandomReadExtendedHandler:TRandomReadExtended;

Watchdog handlers

WatchdogAvailableHandler:TWatchdogAvailable;
WatchdogStartHandler:TWatchdogStart;
WatchdogStopHandler:TWatchdogStop;
WatchdogRefreshHandler:TWatchdogRefresh;

Interrupt request (IRQ) handlers

RequestIRQHandler:TRequestIRQ;
ReleaseIRQHandler:TReleaseIRQ;
RequestExIRQHandler:TRequestExIRQ;
ReleaseExIRQHandler:TReleaseExIRQ;

Fast interrupt request (FIQ) handlers

RequestFIQHandler:TRequestFIQ;
ReleaseFIQHandler:TReleaseFIQ;
RequestExFIQHandler:TRequestExFIQ;
ReleaseExFIQHandler:TReleaseExFIQ;

System call (software interrupt or SWI) handlers

SystemCallHandler:TSystemCall;
RegisterSystemCallHandler:TRegisterSystemCall;
DeregisterSystemCallHandler:TDeregisterSystemCall;
RegisterSystemCallExHandler:TRegisterSystemCallEx;
DeregisterSystemCallExHandler:TDeregisterSystemCallEx;

Interrupt entry handlers

GetInterruptCountHandler:TGetInterruptCount;
GetInterruptStartHandler:TGetInterruptStart;
GetInterruptEntryHandler:TGetInterruptEntry;

Local interrupt entry handlers

GetLocalInterruptCountHandler:TGetLocalInterruptCount;
GetLocalInterruptStartHandler:TGetLocalInterruptStart;
GetLocalInterruptEntryHandler:TGetLocalInterruptEntry;

System call entry handlers

GetSystemCallCountHandler:TGetSystemCallCount;
GetSystemCallEntryHandler:TGetSystemCallEntry;

System handlers

SystemRestartHandler:TSystemRestart;
SystemShutdownHandler:TSystemShutdown;
SystemGetUptimeHandler:TSystemGetUptime;
SystemGetCommandLineHandler:TSystemGetCommandLine;
SystemGetEnvironmentHandler:TSystemGetEnvironment;

CPU handlers

CPUGetArchHandler:TCPUGetArch;
CPUGetTypeHandler:TCPUGetType;
CPUGetBootHandler:TCPUGetBoot;
CPUGetMaskHandler:TCPUGetMask;
CPUGetCountHandler:TCPUGetCount;
CPUGetModeHandler:TCPUGetMode;
CPUGetStateHandler:TCPUGetState;
CPUGetCurrentHandler:TCPUGetCurrent;
CPUGetMemoryHandler:TCPUGetMemory;
CPUGetPercentageHandler:TCPUGetPercentage;
CPUGetUtilizationHandler:TCPUGetUtilization;
CPUGetModelHandler:TCPUGetModel;
CPUGetRevisionHandler:TCPUGetRevision;
CPUGetDescriptionHandler:TCPUGetDescription;

FPU handlers

FPUGetTypeHandler:TFPUGetType;
FPUGetStateHandler:TFPUGetState;

GPU handlers

GPUGetTypeHandler:TGPUGetType;
GPUGetStateHandler:TGPUGetState;
GPUGetMemoryHandler:TGPUGetMemory;

Cache handlers

L1CacheGetTypeHandler:TL1CacheGetType;
L1DataCacheGetSizeHandler:TL1DataCacheGetSize;
L1DataCacheGetLineSizeHandler:TL1DataCacheGetLineSize;
L1InstructionCacheGetSizeHandler:TL1InstructionCacheGetSize;
L1InstructionCacheGetLineSizeHandler:TL1InstructionCacheGetLineSize;
L2CacheGetTypeHandler:TL2CacheGetType;
L2CacheGetSizeHandler:TL2CacheGetSize;
L2CacheGetLineSizeHandler:TL2CacheGetLineSize;

Board handlers

BoardGetTypeHandler:TBoardGetType;
BoardGetModelHandler:TBoardGetModel;
BoardGetSerialHandler:TBoardGetSerial;
BoardGetRevisionHandler:TBoardGetRevision;
BoardGetMACAddressHandler:TBoardGetMACAddress;

Firmware handlers

FirmwareGetRevisionHandler:TFirmwareGetRevision;

Machine handlers

MachineGetTypeHandler:TMachineGetType;

Memory handlers

MemoryGetBaseHandler:TMemoryGetBase;
MemoryGetSizeHandler:TMemoryGetSize;
MemoryGetPageSizeHandler:TMemoryGetPageSize;
MemoryGetLargePageSizeHandler:TMemoryGetLargePageSize;

Power handlers

PowerGetWaitHandler:TPowerGetWait;
PowerGetStateHandler:TPowerGetState;
PowerSetStateHandler:TPowerSetState;

Clock handlers

ClockGetCountHandler:TClockGetCount;
ClockGetTotalHandler:TClockGetTotal;
ClockUpdateOffsetHandler:TClockUpdateOffset;
ClockGetRateHandler:TClockGetRate;
ClockSetRateHandler:TClockSetRate;
ClockGetStateHandler:TClockGetState;
ClockSetStateHandler:TClockSetState;
ClockGetMinRateHandler:TClockGetMinRate;
ClockGetMaxRateHandler:TClockGetMaxRate;

Turbo handlers

TurboGetStateHandler:TTurboGetState;
TurboSetStateHandler:TTurboSetState;

Voltage handlers

VoltageGetValueHandler:TVoltageGetValue;
VoltageSetValueHandler:TVoltageSetValue;
VoltageGetMinValueHandler:TVoltageGetMinValue;
VoltageGetMaxValueHandler:TVoltageGetMaxValue;

Temperature handlers

TemperatureGetCurrentHandler:TTemperatureGetCurrent;
TemperatureGetMaximumHandler:TTemperatureGetMaximum;

GPU memory handlers

GPUMemoryAllocateHandler:TGPUMemoryAllocate;
GPUMemoryReleaseHandler:TGPUMemoryRelease;
GPUMemoryLockHandler:TGPUMemoryLock;
GPUMemoryUnlockHandler:TGPUMemoryUnlock;

GPU misc handlers

GPUExecuteCodeHandler:TGPUExecuteCode;
DispmanxHandleGetHandler:TDispmanxHandleGet;
EDIDBlockGetHandler:TEDIDBlockGet;

Framebuffer handlers

FramebufferAvailableHandler:TFramebufferAvailable;
FramebufferAllocateHandler:TFramebufferAllocate;
FramebufferReleaseHandler:TFramebufferRelease;
FramebufferSetStateHandler:TFramebufferSetState;
FramebufferGetDimensionsHandler:TFramebufferGetDimensions;
FramebufferGetPhysicalHandler:TFramebufferGetPhysical;
FramebufferSetPhysicalHandler:TFramebufferSetPhysical;
FramebufferTestPhysicalHandler:TFramebufferTestPhysical;
FramebufferGetVirtualHandler:TFramebufferGetVirtual;
FramebufferSetVirtualHandler:TFramebufferSetVirtual;
FramebufferTestVirtualHandler:TFramebufferTestVirtual;
FramebufferGetDepthHandler:TFramebufferGetDepth;
FramebufferSetDepthHandler:TFramebufferSetDepth;
FramebufferTestDepthHandler:TFramebufferTestDepth;
FramebufferGetPixelOrderHandler:TFramebufferGetPixelOrder;
FramebufferSetPixelOrderHandler:TFramebufferSetPixelOrder;
FramebufferTestPixelOrderHandler:TFramebufferTestPixelOrder;
FramebufferGetAlphaModeHandler:TFramebufferGetAlphaMode;
FramebufferSetAlphaModeHandler:TFramebufferSetAlphaMode;
FramebufferTestAlphaModeHandler:TFramebufferTestAlphaMode;
FramebufferGetPitchHandler:TFramebufferGetPitch;
FramebufferGetOffsetHandler:TFramebufferGetOffset;
FramebufferSetOffsetHandler:TFramebufferSetOffset;
FramebufferTestOffsetHandler:TFramebufferTestOffset;
FramebufferGetOverscanHandler:TFramebufferGetOverscan;
FramebufferSetOverscanHandler:TFramebufferSetOverscan;
FramebufferTestOverscanHandler:TFramebufferTestOverscan;
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"

|- | FramebufferGetPaletteHandler:TFramebufferGetPalette; | style="width: 65%;"| |- |}

FramebufferSetPaletteHandler:TFramebufferSetPalette;
FramebufferTestPaletteHandler:TFramebufferTestPalette;
FramebufferTestVsyncHandler:TFramebufferTestVsync;
FramebufferSetVsyncHandler:TFramebufferSetVsync;
FramebufferSetBacklightHandler:TFramebufferSetBacklight;

Cursor handlers

CursorSetDefaultHandler:TCursorSetDefault;
CursorSetInfoHandler:TCursorSetInfo;
CursorSetStateHandler:TCursorSetState;

Touch handlers

TouchGetBufferHandler:TTouchGetBuffer;

DMA handlers

DMAAvailableHandler:TDMAAvailable;
DMATransferHandler:TDMATransfer;
DMAFillMemoryHandler:TDMAFillMemory;
DMACopyMemoryHandler:TDMACopyMemory;
DMAReadPeripheralHandler:TDMAReadPeripheral;
DMAWritePeripheralHandler:TDMAWritePeripheral;
DMAAllocateBufferHandler:TDMAAllocateBuffer;
DMAAllocateBufferExHandler:TDMAAllocateBufferEx;
DMAReleaseBufferHandler:TDMAReleaseBuffer;
DMAGetChannelsHandler:TDMAGetChannels;

GPIO handlers

GPIOAvailableHandler:TGPIOAvailable;
GPIOReadHandler:TGPIORead;
GPIOWriteHandler:TGPIOWrite;
GPIOInputGetHandler:TGPIOInputGet;
GPIOInputWaitHandler:TGPIOInputWait;
GPIOInputEventHandler:TGPIOInputEvent;
GPIOOutputSetHandler:TGPIOOutputSet;
GPIOPullGetHandler:TGPIOPullGet;
GPIOPullSelectHandler:TGPIOPullSelect;
GPIOFunctionGetHandler:TGPIOFunctionGet;
GPIOFunctionSelectHandler:TGPIOFunctionSelect;

Virtual GPIO handlers

VirtualGPIOInputGetHandler:TVirtualGPIOInputGet;
VirtualGPIOOutputSetHandler:TVirtualGPIOOutputSet;
VirtualGPIOFunctionSelectHandler:TVirtualGPIOFunctionSelect;

SPI handlers

SPIAvailableHandler:TSPIAvailable;
SPIStartHandler:TSPIStart;
SPIStopHandler:TSPIStop;
SPIReadHandler:TSPIRead;
SPIWriteHandler:TSPIWrite;
SPIWriteReadHandler:TSPIWriteRead;
SPIGetModeHandler:TSPIGetMode;
SPISetModeHandler:TSPISetMode;
SPIGetClockRateHandler:TSPIGetClockRate;
SPISetClockRateHandler:TSPISetClockRate;
SPIGetClockPhaseHandler:TSPIGetClockPhase;
SPISetClockPhaseHandler:TSPISetClockPhase;
SPIGetClockPolarityHandler:TSPIGetClockPolarity;
SPISetClockPolarityHandler:TSPISetClockPolarity;
SPIGetSelectPolarityHandler:TSPIGetSelectPolarity;
SPISetSelectPolarityHandler:TSPISetSelectPolarity;

I2C handlers

I2CAvailableHandler:TI2CAvailable;
I2CStartHandler:TI2CStart;
I2CStopHandler:TI2CStop;
I2CReadHandler:TI2CRead;
I2CWriteHandler:TI2CWrite;
I2CWriteReadHandler:TI2CWriteRead;
I2CWriteWriteHandler:TI2CWriteWrite;
I2CGetRateHandler:TI2CGetRate;
I2CSetRateHandler:TI2CSetRate;
I2CGetAddressHandler:TI2CGetAddress;
I2CSetAddressHandler:TI2CSetAddress;

PWM handlers

PWMAvailableHandler:TPWMAvailable;
PWMStartHandler:TPWMStart;
PWMStopHandler:TPWMStop;
PWMWriteHandler:TPWMWrite;
PWMSetModeHandler:TPWMSetMode;
PWMSetRangeHandler:TPWMSetRange;
PWMSetFrequencyHandler:TPWMSetFrequency;
PWMConfigureHandler:TPWMConfigure;

RTC handlers

RTCAvailableHandler:TRTCAvailable;
RTCGetTimeHandler:TRTCGetTime;
RTCSetTimeHandler:TRTCSetTime;

Serial handlers

SerialAvailableHandler:TSerialAvailable;
SerialOpenHandler:TSerialOpen;
SerialCloseHandler:TSerialClose;
SerialReadHandler:TSerialRead;
SerialWriteHandler:TSerialWrite;

Peripheral handlers

PeripheralGetBaseHandler:TPeripheralGetBase;
PeripheralGetSizeHandler:TPeripheralGetSize;
PeripheralReadHandler:TPeripheralRead;
PeripheralWriteHandler:TPeripheralWrite;
LocalPeripheralGetBaseHandler:TLocalPeripheralGetBase;
LocalPeripheralGetSizeHandler:TLocalPeripheralGetSize;

GetSP/PC handlers

GetSPHandler:TGetSP;
GetPCHandler:TGetPC;

Enable/Disable/Save/RestoreIRQ/FIQ handlers

GetIRQHandler:TGetIRQ;
EnableIRQHandler:TEnableIRQ;
DisableIRQHandler:TDisableIRQ;
SaveIRQHandler:TSaveIRQ;
RestoreIRQHandler:TRestoreIRQ;
GetFIQHandler:TGetFIQ;
EnableFIQHandler:TEnableFIQ;
DisableFIQHandler:TDisableFIQ;
SaveFIQHandler:TSaveFIQ;
RestoreFIQHandler:TRestoreFIQ;
EnableIRQFIQHandler:TEnableIRQFIQ;
DisableIRQFIQHandler:TDisableIRQFIQ;
SaveIRQFIQHandler:TSaveIRQFIQ;
RestoreIRQFIQHandler:TRestoreIRQFIQ;
GetAbortHandler:TGetAbort;
EnableAbortHandler:TEnableAbort;
DisableAbortHandler:TDisableAbort;
SaveAbortHandler:TSaveAbort;
RestoreAbortHandler:TRestoreAbort;

Halt/Pause handlers

HaltHandler:THalt;
PauseHandler:TPause;

HaltThread handlers

HaltThreadHandler:THaltThread;

SendEvent/WaitForEvent/Interrupt handlers

SendEventHandler:TSendEvent;
WaitForEventHandler:TWaitForEvent;
WaitForInterruptHandler:TWaitForInterrupt;

Barrier handlers

ReadMemoryBarrierHandler:TReadMemoryBarrier;
WriteMemoryBarrierHandler:TWriteMemoryBarrier;
DataMemoryBarrierHandler:TDataMemoryBarrier;
DataSynchronizationBarrierHandler:TDataSynchronizationBarrier;
InstructionMemoryBarrierHandler:TInstructionMemoryBarrier;

TLB handlers

InvalidateTLBHandler:TInvalidateTLB;
InvalidateDataTLBHandler:TInvalidateDataTLB;
InvalidateInstructionTLBHandler:TInvalidateInstructionTLB;

Cache handlers

InvalidateCacheHandler:TInvalidateCache;
CleanDataCacheHandler:TCleanDataCache;
InvalidateDataCacheHandler:TInvalidateDataCache;
CleanAndInvalidateDataCacheHandler:TCleanAndInvalidateDataCache;
InvalidateInstructionCacheHandler:TInvalidateInstructionCache;
CleanDataCacheRangeHandler:TCleanDataCacheRange;
InvalidateDataCacheRangeHandler:TInvalidateDataCacheRange;
CleanAndInvalidateDataCacheRangeHandler:TCleanAndInvalidateDataCacheRange;
InvalidateInstructionCacheRangeHandler:TInvalidateInstructionCacheRange;

Prefetch buffer handlers

FlushPrefetchBufferHandler:TFlushPrefetchBuffer;

Branch target cache handlers

FlushBranchTargetCacheHandler:TFlushBranchTargetCache;

ContextSwitch handlers

ContextSwitchHandler:TContextSwitch;
ContextSwitchIRQHandler:TContextSwitchIRQ;
ContextSwitchFIQHandler:TContextSwitchFIQ;
ContextSwitchSWIHandler:TContextSwitchSWI;

And/Xor/Or/Increment/Decrement/Exchange handlers

InterlockedOrHandler:TInterlockedOr;
InterlockedXorHandler:TInterlockedXor;
InterlockedAndHandler:TInterlockedAnd;
InterlockedDecrementHandler:TInterlockedDecrement;
InterlockedIncrementHandler:TInterlockedIncrement;
InterlockedExchangeHandler:TInterlockedExchange;
InterlockedAddExchangeHandler:TInterlockedAddExchange;
InterlockedCompareExchangeHandler:TInterlockedCompareExchange;

PageTable handlers

PageTableGetBaseHandler:TPageTableGetBase;
PageTableGetSizeHandler:TPageTableGetSize;
PageTableGetEntryHandler:TPageTableGetEntry;
PageTableSetEntryHandler:TPageTableSetEntry;

PageTables handlers

PageTablesGetAddressHandler:TPageTablesGetAddress;
PageTablesGetLengthHandler:TPageTablesGetLength;
PageTablesGetCountHandler:TPageTablesGetCount;
PageTablesGetShiftHandler:TPageTablesGetShift;
PageTablesGetNextHandler:TPageTablesGetNext;
PageTablesGetUsedHandler:TPageTablesGetUsed;
PageTablesGetFreeHandler:TPageTablesGetFree;

VectorTable handlers

VectorTableGetBaseHandler:TVectorTableGetBase;
VectorTableGetSizeHandler:TVectorTableGetSize;
VectorTableGetCountHandler:TVectorTableGetCount;
VectorTableGetEntryHandler:TVectorTableGetEntry;
VectorTableSetEntryHandler:TVectorTableSetEntry;

FirstBitSet handler

FirstBitSetHandler:TFirstBitSet;

CountLeadingZeros handlers

CountLeadingZerosHandler:TCountLeadingZeros;

Console handlers

ConsoleGetKeyHandler:TConsoleGetKey;
ConsolePeekKeyHandler:TConsolePeekKey;
ConsoleWriteCharHandler:TConsoleWriteChar;
ConsoleReadCharHandler:TConsoleReadChar;
ConsoleReadWideCharHandler:TConsoleReadWideChar;
ConsoleHideMouseHandler:TConsoleHideMouse;
ConsoleShowMouseHandler:TConsoleShowMouse;
ConsoleReadMouseHandler:TConsoleReadMouse;

CodePage handlers

CodePageToWideCharHandler:TCodePageToWideChar;
Variable

Name handlers

HostGetNameHandler:THostGetName;
HostSetNameHandler:THostSetName;
HostGetDomainHandler:THostGetDomain;
HostSetDomainHandler:THostSetDomain;

Logging handlers

LoggingOutputHandler:TLoggingOutput;
LoggingOutputExHandler:TLoggingOutputEx;


Function declarations



Initialization functions

procedure PlatformInit;
Description: Initialize platform specific information for the current hardware
Note None documented


procedure CPUInit;
Description: Initialize the CPU including performance features etc (Where Applicable)
Note None documented


procedure FPUInit;
Description: Initialize the Floating Point Processor Unit (Where Applicable)
Note None documented


procedure GPUInit;
Description: Initialize the Graphics Processor Unit (Where Applicable)
Note None documented


procedure MMUInit;
Description: Initialize the Memory Management Unit (Where Applicable)
Note None documented


procedure SMPInit;
Description: Initialize the Symetric Multi Processor support (Where Applicable)
Note Secondary CPU boot is performed by SecondaryInit in Threads


procedure CacheInit;
Description: Initialize CPU Data and Instruction Caching (Where Applicable)
Note None documented


procedure BoardInit;
Description: Initialize Board specific information (Where Applicable)
Note None documented


procedure MemoryInit;
Description: Initialize Memory specific information (Where Applicable)
Note None documented


procedure ClockInit;
Description: Initialize the Clock handling
Note None documented


procedure PowerInit;
Description: Initialize Power management (Where Applicable)
Note None documented


procedure MailboxInit;
Description: Initialize Mailbox access (Where Applicable)
Note None documented


procedure InterruptInit;
Description: Initialize Interrupt handling
Note None documented


procedure PeripheralInit;
Description: Initialize Peripheral devices (Where Applicable)
Note None documented


procedure ParseBootTags;
Description: Parse any boot tag information passed by the bootloader (Where Applicable)
Note None documented


procedure ParseCommandLine;
Description: Setup argc, argv and cmdline and process known command line options (Where Applicable)
Note None documented


procedure ParseEnvironment;
Description: Setup envp and process known environment options (Where Applicable)
Note None documented


Boot functions

procedure BootBlink; inline;
Description: Blink the Activity LED (Where Applicable)
Note Intended for startup diagnostics when bootstrapping a new board


procedure BootOutput(Value:LongWord); inline;
Description: Output boot time information (Where Applicable)
Note Intended for startup diagnostics when bootstrapping a new board


LED functions

procedure PowerLEDEnable; inline;
Description: Enable the Power LED (Where Applicable)
Note None documented


procedure PowerLEDOn; inline;
Description: Turn On the Power LED (Where Applicable)
Note None documented


procedure PowerLEDOff; inline;
Description: Turn Off the Power LED (Where Applicable)
Note None documented


procedure ActivityLEDEnable; inline;
Description: Enable the Activity LED (Where Applicable)
Note None documented


procedure ActivityLEDOn; inline;
Description: Turn On the Activity LED (Where Applicable)
Note None documented


procedure ActivityLEDOff; inline;
Description: Turn Off the Activity LED (Where Applicable)
Note None documented


Counter functions (Timer device)

function CounterAvailable:Boolean; inline;
Description: Check if a counter is currently available
Note None documented


function CounterRead:LongWord; inline;
Description: Read the current value of the default counter
Return The 32 bit current value of the counter or 0 on failure


function CounterRead64:Int64; inline;
Description: Read the current value of the default counter
Return The 64 bit current value of the counter or 0 on failure


function CounterWait:LongWord; inline;
Description: Wait for the current interval to expire on the default counter
Return ERROR_SUCCESS if the interval expired or another error code on failure


function CounterEvent(Callback:TCounterCallback; Data:Pointer):LongWord; inline;
Description: Schedule a function to be called when the current interval expires on the default counter
Callback The function to be called when the interval expires
Data A pointer to be pass to the function when the interval expires (Optional)
Return ERROR_SUCCESS if the callback was scheduled successfully or another error code on failure


function CounterCancel:LongWord; inline;
Description: Cancel a previously scheduled event callback function on the default counter
Return ERROR_SUCCESS if the callback was cancelled successfully or another error code on failure


function CounterGetRate:LongWord; inline;
Description: Get the current clock rate in Hz of the default counter
Return The current clock rate in Hz or 0 on failure


function CounterSetRate(Rate:LongWord):LongWord; inline;
Description: Set the current clock rate in Hz of the default counter
Rate The clock rate in Hz to set
Return ERROR_SUCCESS if the clock rate was set or another error code on failure


function CounterGetInterval:LongWord; inline;
Description: Get the current interval in ticks of the default counter
Return The current interval in ticks or 0 on failure (or not set)
Note The tick rate is determined by the clock rate


function CounterSetInterval(Interval:LongWord):LongWord; inline;
Description: Set the current interval in ticks of the default counter
Interval The interval in ticks to set
Return ERROR_SUCCESS if the interval was set or another error code on failure
Note The tick rate is determined by the clock rate


Mailbox functions

function MailboxReceive(Mailbox,Channel:LongWord):LongWord; inline;
Description: Receive from specified mailbox on specified channel
Note None documented


procedure MailboxSend(Mailbox,Channel,Data:LongWord); inline;
Description: Send to specified mailbox on specified channel
Note None documented


function MailboxCall(Mailbox,Channel,Data:LongWord; var Response:LongWord):LongWord; inline;
Description: Perform a transaction (Send/Receive) to specified mailbox on specified channel
Note None documented


function MailboxCallEx(Mailbox,Channel,Data:LongWord; var Response:LongWord; Timeout:LongWord):LongWord; inline;
Description: Perform a transaction (Send/Receive) to specified mailbox on specified channel
Note None documented


function MailboxPropertyCall(Mailbox,Channel:LongWord; Data:Pointer; var Response:LongWord):LongWord; inline;
Description: Perform a property tag transaction (Send/Receive) to specified mailbox on specified channel
Note None documented


function MailboxPropertyCallEx(Mailbox,Channel:LongWord; Data:Pointer; var Response:LongWord; Timeout:LongWord):LongWord; inline;
Description: Perform a property tag transaction (Send/Receive) to specified mailbox on specified channel
Note None documented


Random number functions

function RandomAvailable:Boolean; inline;
Description: Check if a hardware random number generator is currently available
Note The software random number generator from the RTL is always available


procedure RandomSeed(Seed:LongWord); inline;
Description: To be documented
Note None documented


function RandomReadLongInt(Limit:LongInt):LongInt; inline;
Description: To be documented
Note None documented


function RandomReadInt64(Limit:Int64):Int64; inline;
Description: To be documented
Note None documented


function RandomReadExtended:Extended; inline;
Description: To be documented
Note None documented


Watchdog Timer Functions

function WatchdogAvailable:Boolean; inline; 
Description: Check if a watchdog timer is currently available
Note None documented


function WatchdogStart(Milliseconds:LongWord):LongWord; inline;
Description: To be documented
Note None documented


function WatchdogStop:LongWord; inline;
Description: To be documented
Note None documented


function WatchdogRefresh(Milliseconds:LongWord):LongWord; inline;
Description: To be documented
Note None documented


Interrupt request (IRQ) functions

function RequestIRQ(CPUID,Number:LongWord; Handler:TInterruptHandler; Parameter:Pointer):LongWord; inline;
Description: Request registration of the supplied handler to the specified IRQ number
Note If the IRQ number is already registered then the request will fail


function ReleaseIRQ(CPUID,Number:LongWord; Handler:TInterruptHandler; Parameter:Pointer):LongWord; inline;
Description: Request deregistration of the supplied handler from the specified IRQ number
Note If the IRQ number is not currently registered then the request will fail


function RequestExIRQ(CPUID,Number:LongWord; Handler:TInterruptHandler; HandlerEx:TInterruptExHandler; Parameter:Pointer):LongWord; inline;
Description: Request registration of the supplied extended handler to the specified IRQ number
Note If the IRQ number is already registered then the request will fail


function ReleaseExIRQ(CPUID,Number:LongWord; Handler:TInterruptHandler; HandlerEx:TInterruptExHandler; Parameter:Pointer):LongWord; inline;
Description: Request deregistration of the supplied extended handler from the specified IRQ number
Note If the IRQ number is not currently registered then the request will fail


Fast interrupt request (FIQ) functions

function RequestFIQ(CPUID,Number:LongWord; Handler:TInterruptHandler; Parameter:Pointer):LongWord; inline;
Description: Request registration of the supplied handler to the specified FIQ number (Where Applicable)
Note If the FIQ number is already registered then the request will fail


function ReleaseFIQ(CPUID,Number:LongWord; Handler:TInterruptHandler; Parameter:Pointer):LongWord; inline;
Description: Request deregistration of the supplied handler from the specified FIQ number (Where Applicable)
Note If the FIQ number is not currently registered then the request will fail


function RequestExFIQ(CPUID,Number:LongWord; Handler:TInterruptHandler; HandlerEx:TInterruptExHandler; Parameter:Pointer):LongWord; inline;
Description: Request registration of the supplied extended handler to the specified FIQ number (Where Applicable)
Note If the FIQ number is already registered then the request will fail


function ReleaseExFIQ(CPUID,Number:LongWord; Handler:TInterruptHandler; HandlerEx:TInterruptExHandler; Parameter:Pointer):LongWord; inline;
Description: Request deregistration of the supplied extended handler from the specified FIQ number (Where Applicable)
Note If the FIQ number is not currently registered then the request will fail


System call (Software Interrupt or SWI) functions

procedure SystemCall(Number:LongWord; Param1,Param2,Param3:PtrUInt); inline;
Description: Perform a System Call function with the supplied parameters (Where Applicable)
Number The System Call number to be called
Param1 The first parameter to pass to the function (Optional / Function defined)
Param2 The second parameter to pass to the function (Optional / Function defined)
Param3 The third parameter to pass to the function (Optional / Function defined)


function RegisterSystemCall(Number:LongWord; Handler:TSystemCallHandler):LongWord; inline;
Description: Request registration of the supplied handler to the specified System Call number (Where Applicable)
Number The System Call number to be registered
Handler The handler function to be registered
Note If the System Call number is already registered then the request will fail


function DeregisterSystemCall(Number:LongWord; Handler:TSystemCallHandler):LongWord; inline;
Description: Request deregistration of the supplied handler from the specified System Call number (Where Applicable)
Number The System Call number to be deregistered
Handler The handler function to be deregistered
Note If the System Call number is not currently registered then the request will fail


function RegisterSystemCallEx(CPUID,Number:LongWord; Handler:TSystemCallHandler; HandlerEx:TSystemCallExHandler):LongWord; inline;
Description: Request registration of the supplied extended handler to the specified System Call number (Where Applicable)
CPUID The CPU ID to register the System Call against (or CPU_ID_ALL)
Number The System Call number to be registered
Handler The handler function to be registered (Optional) (Handler or HandlerEx must be specified, not both)
HandlerEx The extended handler function to be registered (Optional) (Handler or HandlerEx must be specified, not both)
Note If the System Call number is already registered then the request will fail


function DeregisterSystemCallEx(CPUID,Number:LongWord; Handler:TSystemCallHandler; HandlerEx:TSystemCallExHandler):LongWord; inline;
Description: Request deregistration of the supplied extended handler from the specified System Call number (Where Applicable)
CPUID The CPU ID to deregister the System Call from (or CPU_ID_ALL)
Number The System Call number to be deregistered
Handler The handler function to be deregistered (Optional) (Handler or HandlerEx must be specified, not both)
HandlerEx The extended handler function to be deregistered (Optional) (Handler or HandlerEx must be specified, not both)
Note If the System Call number is not currently registered then the request will fail


Interrupt entry functions

function GetInterruptCount:LongWord; inline;
Description: Get the number of interrupt entries for the current platform
Note None documented


function GetInterruptStart:LongWord; inline;
Description: Get the starting number of interrupt entries for the current platform
Note None documented


function GetInterruptEntry(Number:LongWord):TInterruptEntry; inline;
Description: Get the interrupt entry for the specified interrupt number
Note None documented


Local interrupt entry functions

function GetLocalInterruptCount:LongWord; inline;
Description: Get the number of local interrupt entries for the current platform (Where Applicable)
Note None documented


function GetLocalInterruptStart:LongWord; inline;
Description: Get the starting number of local interrupt entries for the current platform (Where Applicable)
Note None documented


function GetLocalInterruptEntry(CPUID,Number:LongWord):TInterruptEntry; inline;
Description: Get the local interrupt entry for the specified interrupt number (Where Applicable)
Note None documented


System call entry functions

function GetSystemCallCount:LongWord; inline;
Description: Get the number of system call entries for the current platform (Where Applicable)
Note None documented


function GetSystemCallEntry(Number:LongWord):TSystemCallEntry; inline;
Description: Get the system call entry for the specified system call number (Where Applicable)
Note None documented


System functions

function SystemRestart(Delay:LongWord):LongWord; inline;
Description: Restart the system
Note None documented


function SystemShutdown(Delay:LongWord):LongWord; inline;
Description: Shutdown the system
Note None documented


function SystemGetUptime:Int64; inline;
Description: Get the current system up time in 100 nanosecond ticks since 1/1/1601
Return The current system up time
Note This is the same time format as Windows FILE_TIME and is intended to allow compatibility with file system functions etc


function SystemGetCommandLine:String; inline;
Description: Get the current command line
Note None documented


function SystemGetEnvironment:Pointer; inline;
Description: Get the current environment
Note None documented


CPU Functions

function CPUGetArch:LongWord; inline;
Description: Get the CPU architecture for this board
Note None documented


function CPUGetType:LongWord; inline;
Description: Get the CPU type for this board
Note None documented


function CPUGetBoot:LongWord; inline;
Description: Get the boot CPU for this board
Note None documented


function CPUGetMask:LongWord; inline;
Description: Get the CPU mask for this board
Note None documented


function CPUGetCount:LongWord; inline;
Description: Get the CPU count for this board
Note None documented


function CPUGetMode:LongWord; inline;
Description: Get the current CPU moded
Note The return value is specific to the CPU type


function CPUGetState:LongWord; inline;
Description: Get the current CPU state
Note None documented


function CPUGetCurrent:LongWord; inline;
Description: Get the current CPU ID
Note None documented


function CPUGetMemory(var Address:PtrUInt; var Length:LongWord):LongWord; inline;
Description: Get the memory start and size available to the CPU
Note None documented


function CPUGetPercentage(CPUID:LongWord):Double; inline;
Description: Get the last second ulitization of the specified CPU in percentage
CPUID The CPU to get utilization from or CPU_ID_ALL for average of all CPUs


function CPUGetUtilization(CPUID:LongWord):LongWord; inline;
Description: Get the last second ulitization of the specified CPU
CPUID The CPU to get utilization from or CPU_ID_ALL for average of all CPUs


function CPUGetModel:LongWord; inline;
Description: Get the CPU model of the current CPU
Note None documented


function CPUGetRevision:LongWord; inline;
Description: Get the CPU revision of the current CPU
Note The return value is specific to the CPU type and model


function CPUGetDescription:String; inline;
Description: Get the CPU description of the current CPU
Note None documented


FPU functions

function FPUGetType:LongWord; inline;
Description: Get the FPU type for this board
Note None documented


function FPUGetState:LongWord; inline;
Description: Get the current FPU state
Note None documented


GPU functions

function GPUGetType:LongWord; inline;
Description: Get the GPU type for this board
Note None documented


function GPUGetState:LongWord; inline;
Description: Get the current GPU state
Note None documented


function GPUGetMemory(var Address:PtrUInt; var Length:LongWord):LongWord; inline;
Description: Get the memory start and size available to the GPU
Note None documented


Cache functions

function L1CacheGetType:LongWord; inline;
Description: Get the L1 cache type for this board
Note None documented


function L1DataCacheGetSize:LongWord; inline;
Description: Get the L1 data cache size for this board
Note If data cache is not supported, the size returned is zero. If separate data and instruction caches are not supported, the size returned is the unified size.


function L1DataCacheGetLineSize:LongWord; inline;
Description: Get the L1 data cache line size for this board
Note If data cache is not supported, the size returned is zero. If separate data and instruction caches are not supported, the size returned is the unified size.


function L1InstructionCacheGetSize:LongWord; inline; 
Description: Get the L1 instruction cache size for this board
Note If instruction cache is not supported, the size returned is zero. If separate data and instruction caches are not supported, the size returned is the unified size.


function L1InstructionCacheGetLineSize:LongWord; inline;
Description: Get the L1 instruction cache line size for this board
Note If instruction cache is not supported, the size returned is zero. If separate data and instruction caches are not supported, the size returned is the unified size.


function L2CacheGetType:LongWord; inline;
Description: Get the L2 cache type for this board
Note None documented


function L2CacheGetSize:LongWord; inline;
Description: Get the L2 cache size for this board
Note If L2 cache is not supported, the size returned is zero


function L2CacheGetLineSize:LongWord; inline;
Description: Get the L2 cache line size for this board
Note If L2 cache is not supported, the size returned is zero


Board functions

function BoardGetType:LongWord; inline;
Description: Get the current Board type
Note None documented


function BoardGetModel:LongWord; inline;
Description: Get the current Board model
Note None documented


function BoardGetSerial:Int64; inline;
Description: Get the current Board serial number
Note None documented


function BoardGetRevision:LongWord; inline;
Description: Get the current Board revision number
Note None documented


function BoardGetMACAddress:String; inline;
Description: Get the current Board MAC address (Where Applicable)
Note None documented


Firmware functions

function FirmwareGetRevision:LongWord; inline;
Description: Get the current board Firmware Revision
Note None documented


Machine functions

function MachineGetType:LongWord; inline;
Description: Get the current Machine type
Note None documented


Memory functions

function MemoryGetBase:PtrUInt; inline;
Description: Get the base address of system memory
Note None documented


function MemoryGetSize:LongWord; inline;
Description: Get the total size of system memory
Note None documented


function MemoryGetPageSize:LongWord; inline;
Description: Get the page size of system memory
Note None documented


function MemoryGetLargePageSize:LongWord; inline;
Description: Get the large page size of system memory (Where Applicable)
Note None documented


Power functions

function PowerOn(PowerId:LongWord):LongWord;
Description: Power On the specified device
Note None documented


function PowerOff(PowerId:LongWord):LongWord;
Description: Power Off the specified device
Note None documented


function PowerGetWait(PowerId:LongWord):LongWord; inline;
Description: Get the enable wait time in Microseconds of the specified device
Note None documented


function PowerGetState(PowerId:LongWord):LongWord; inline;
Description: Get the power state of the specified device
Note None documented


function PowerSetState(PowerId,State:LongWord; Wait:Boolean):LongWord; inline;
Description: Set the power state of the specified device (Optionally waiting for ready)
Note None documented


Clock functions

function ClockGetTime:Int64;
Description: Get the current system time in 100 nanosecond ticks since 1/1/1601
Return The current system time
Note This is the same time format as Windows FILE_TIME and is intended to allow compatibility with file system functions etc. By default the time returned by this function is considered to be UTC but the actual conversion between UTC and local time is handled at a higher level.


function ClockSetTime(const Time:Int64; RTC:Boolean):Int64;
Description: Set the current system time in 100 nanosecond ticks since 1/1/1601
Time The time to be set
RTC Set the default RTC (real time clock) if available
Return The system time after setting
Note This is the same time format as Windows FILE_TIME and is intended to allow compatibility with file system functions etc. By default the time passed to this function is considered to be UTC but the actual conversion between UTC and local time is handled at a higher level.


function ClockGetCount:LongWord; inline;
Description: Gets the current system clock count (32 least significant bits of total)
Note This will normally come from the free running system timer in the board and is useful as a form of tick count but not for time keeping because the actual rate at which this increments is dependent on the system timer clock frequency of the specific board and may not be a measure of time in its raw form.


function ClockGetTotal:Int64; inline;
Description: Gets the total system clock count
Note This will normally come from the free running system timer in the board and is useful as a form of tick count but not for time keeping because the actual rate at which this increments is dependent on the system timer clock frequency of the specific board and may not be a measure of time in its raw form.


function ClockUpdateOffset:LongWord; inline;
Description: Update the system time offset between UTC and Local
Note None documented


function ClockGetRate(ClockId:LongWord):LongWord; inline;
Description: Get the clock rate in Hz of the specified Clock
Note None documented


function ClockSetRate(ClockId,Rate:LongWord; Turbo:Boolean):LongWord; inline;
Description: Set the clock rate in Hz of the specified Clock
Note None documented


function ClockGetState(ClockId:LongWord):LongWord; inline;
Description: Get the state of the specified Clock
Note None documented


function ClockSetState(ClockId,State:LongWord):LongWord; inline;
Description: Set the state of the specified Clock
Note None documented


function ClockGetMinRate(ClockId:LongWord):LongWord; inline;
Description: Get the minimum clock rate in Hz of the specified Clock
Note None documented


function ClockGetMaxRate(ClockId:LongWord):LongWord; inline;
Description: Get the maximum clock rate in Hz of the specified Clock
Note None documented


Turbo functions

function TurboGetState(TurboId:LongWord):LongWord; inline;
Description: Get the Turbo state (0 equals Off / 1 equals On) of the specified device
Note None documented


function TurboSetState(TurboId,State:LongWord):LongWord; inline;
Description: Set the Turbo state (0 equals Off / 1 equals On) of the specified device
Note None documented


Voltage functions

function VoltageGetValue(VoltageId:LongWord):LongWord; inline;
Description: Get the current voltage level of the specified device
Note None documented


function VoltageSetValue(VoltageId,Value:LongWord):LongWord; inline;
Description: Set the current voltage level of the specified device
Note None documented


function VoltageGetMinValue(VoltageId:LongWord):LongWord; inline;
Description: Get the minimum voltage level of the specified device
Note None documented


function VoltageGetMaxValue(VoltageId:LongWord):LongWord; inline;
Description: Get the maximum voltage level of the specified device
Note None documented


Temperature functions

function TemperatureGetCurrent(TemperatureId:LongWord):LongWord; inline;
Description: Get the current temperature in thousandths of a degree C of the specified device
Note None documented


function TemperatureGetMaximum(TemperatureId:LongWord):LongWord; inline;
Description: Get the maximum temperature in thousandths of a degree C of the specified device
Note None documented


GPU memory functions

function GPUMemoryAllocate(Length,Alignment,Flags:LongWord):THandle; inline;
Description: Allocate memory from the GPU
Note None documented


function GPUMemoryRelease(Handle:THandle):LongWord; inline;
Description: Release memory allocated from the GPU
Note None documented


function GPUMemoryLock(Handle:THandle):LongWord; inline;
Description: Lock memory allocated from the GPU and return an address
Note None documented


function GPUMemoryUnlock(Handle:THandle):LongWord; inline;
Description: Unlock memory allocated from the GPU
Note None documented


GPU misc functions

function GPUExecuteCode(Address:Pointer; R0,R1,R2,R3,R4,R5:LongWord):LongWord; inline;
Description: Execute a block of code on the GPU
Note None documented


function DispmanxHandleGet(Resource:THandle):THandle; inline;
Description: Convert a Dispmanx Resouse handle to a Memory handle (Which can be passed to Lock/Unlock above)
Note None documented


function EDIDBlockGet(Block:LongWord; Buffer:Pointer; Length:LongWord):LongWord; inline;
Description: Get an EDID block from HDMI
Note None documented


Framebuffer functions

function FramebufferAvailable:Boolean; inline;
Description: Check if a framebuffer device is currently available
Note None documented


function FramebufferAllocate(Alignment:LongWord; var Address,Length:LongWord):LongWord; inline;
Description: Allocate a new Framebuffer
Note None documented


function FramebufferRelease:LongWord; inline;
Description: Release the current Framebuffer
Note None documented


function FramebufferSetState(State:LongWord):LongWord; inline;
Description: Set the current Framebuffer (Display) state (0 for Off / 1 for On)
Note None documented


function FramebufferGetDimensions(var Width,Height,Top,Bottom,Left,Right:LongWord):LongWord; inline;
Description: Get the default Dimensions of the Framebuffer (Physical Width, Height and Overscan Top, Bottom, Left, Right in Pixels)
Note None documented


function FramebufferGetPhysical(var Width,Height:LongWord):LongWord; inline;
Description: Get the Physical Framebuffer Width and Height in Pixels
Note The "physical" size is the size of the allocated buffer in memory, not the resolution of the video signal sent to the display device


function FramebufferSetPhysical(var Width,Height:LongWord):LongWord; inline;
Description: Set the Physical Framebuffer Width and Height in Pixels
Note None documented


function FramebufferTestPhysical(var Width,Height:LongWord):LongWord; inline;
Description: Test the Physical Framebuffer Width and Height in Pixels
Note None documented


function FramebufferGetVirtual(var Width,Height:LongWord):LongWord; inline;
Description: Get the Virtual Framebuffer Width and Height in Pixels
Note The "virtual" size is the portion of buffer that is sent to the display device, not the resolution the buffer itself. This may be smaller than the allocated buffer size in order to implement panning


function FramebufferSetVirtual(var Width,Height:LongWord):LongWord; inline;
Description: Set the Virtual Framebuffer Width and Height in Pixels
Note None documented


function FramebufferTestVirtual(var Width,Height:LongWord):LongWord; inline;
Description: Test the Virtual Framebuffer Width and Height in Pixels
Note None documented


function FramebufferGetDepth(var Depth:LongWord):LongWord; inline;
Description: Get the Framebuffer Depth in Bits per Pixel
Note None documented


function FramebufferSetDepth(var Depth:LongWord):LongWord; inline;
Description: Set the Framebuffer Depth in Bits per Pixel
Note None documented


function FramebufferTestDepth(var Depth:LongWord):LongWord; inline;
Description: Test the Framebuffer Depth in Bits per Pixel
Note None documented


function FramebufferGetPixelOrder(var Order:LongWord):LongWord; inline;
Description: Get the Framebuffer Pixel Order (0 = BGR / 1 = RGB)
Note None documented


function FramebufferSetPixelOrder(var Order:LongWord):LongWord; inline;
Description: Set the Framebuffer Pixel Order (0 = BGR / 1 = RGB)
Note None documented


function FramebufferTestPixelOrder(var Order:LongWord):LongWord; inline;
Description: Test the Framebuffer Pixel Order (0 = BGR / 1 = RGB)
Note None documented


function FramebufferGetAlphaMode(var Mode:LongWord):LongWord; inline;
Description: Get the Framebuffer Alpha Mode
Note None documented


function FramebufferSetAlphaMode(var Mode:LongWord):LongWord; inline;
Description: Set the Framebuffer Alpha Mode
Note None documented


function FramebufferTestAlphaMode(var Mode:LongWord):LongWord; inline;
Description: Test the Framebuffer Alpha Mode
Note None documented


function FramebufferGetPitch:LongWord; inline;
Description: Get the Framebuffer Pitch in Bytes per Line
Note None documented


function FramebufferGetOffset(var X,Y:LongWord):LongWord; inline;
Description: Get the Framebuffer Virtual Offset in Pixels
Note None documented


function FramebufferSetOffset(var X,Y:LongWord):LongWord; inline;
Description: Set the Framebuffer Virtual Offset in Pixels
Note None documented


function FramebufferTestOffset(var X,Y:LongWord):LongWord; inline;
Description: Test the Framebuffer Virtual Offset in Pixels
Note None documented


function FramebufferGetOverscan(var Top,Bottom,Left,Right:LongWord):LongWord; inline;
Description: Get the Framebuffer Top, Bottom, Left and Right Overscan in Pixels
Note None documented


function FramebufferSetOverscan(var Top,Bottom,Left,Right:LongWord):LongWord; inline;
Description: Set the Framebuffer Top, Bottom, Left and Right Overscan in Pixels
Note None documented


function FramebufferTestOverscan(var Top,Bottom,Left,Right:LongWord):LongWord; inline;
Description: Test the Framebuffer Top, Bottom, Left and Right Overscan in Pixels
Note None documented


function FramebufferGetPalette(Buffer:Pointer; Length:LongWord):LongWord; inline;
Description: Get the Framebuffer Palette in RGBA values
Note None documented


function FramebufferSetPalette(Start,Count:LongWord; Buffer:Pointer; Length:LongWord):LongWord; inline;
Description: Set the Framebuffer Palette in RGBA values
Note None documented


function FramebufferTestPalette(Start,Count:LongWord; Buffer:Pointer; Length:LongWord):LongWord; inline;
Description: Test the Framebuffer Palette in RGBA values
Note None documented


function FramebufferTestVsync:LongWord; inline;
Description: Test the Framebuffer Vertical Sync (Where Applicable)
Note None documented


function FramebufferSetVsync:LongWord; inline;
Description: Set (Wait For) the Framebuffer Vertical Sync (Where Applicable)
Note None documented


function FramebufferSetBacklight(Brightness:LongWord):LongWord; inline;
Description: Set the Framebuffer Backlight brightness (Where Applicable)
Note None documented


Touch functions

function TouchGetBuffer(var Address:LongWord):LongWord; inline;
Description: Get the Touchscreen memory buffer (Where Applicable)
Note None documented


Cursor functions

function CursorSetDefault:LongWord; inline;
Description: Set the default Cursor Info (Where Applicable)
Note None documented


function CursorSetInfo(Width,Height,HotspotX,HotspotY:LongWord; Pixels:Pointer; Length:LongWord):LongWord; inline;
Description: Set the Cursor Info (Width and Height, Hotspot and Pixel image)
Note None documented


function CursorSetState(Enabled:Boolean; X,Y:LongWord; Relative:Boolean):LongWord; inline;
Description: Set the Cursor State (Enabled, X and Y)
Relative X, Y is relative to Display (Virtual) not Framebuffer (Physical)


DMA functions

function DMAAvailable:Boolean; inline;
Description: Check if DMA is currently available
Note None documented


function DMATransfer(Data:PDMAData; Direction,Peripheral:LongWord):LongWord; inline;
Description: Perform a DMA transfer using the list of DMA data blocks provided
Data A linked list of DMA data blocks for the transfer
Direction The direction of the DMA request (eg DMA_DIR_MEM_TO_MEM)
Peripheral The peripheral ID for data request gating (eg DMA_DREQ_ID_NONE)


function DMAFillMemory(Dest:Pointer; Size:LongWord; Value:Byte):LongWord; inline;
Description: Fill memory at the destination address using DMA
Dest The address to start the memory fill
Size The size of memory to fill in bytes
Value The value to fill the memory with


function DMACopyMemory(Source,Dest:Pointer; Size:LongWord):LongWord; inline;
Description: Copy memory from the source to the destination address using DMA
Source The source address to start the memory copy
Dest The destination address to start the memory copy
Size The size of memory to copy in bytes


function DMAReadPeripheral(Address,Dest:Pointer; Size,Peripheral:LongWord):LongWord; inline;
Description: Read from a periperal address to the destination address using DMA
Address The address of the periperhal register to read from
Source The destination address to start writing to
Size The size of the read in bytes
Peripheral The peripheral ID for data request gating (eg DMA_DREQ_ID_UART_RX)


function DMAWritePeripheral(Source,Address:Pointer; Size,Peripheral:LongWord):LongWord; inline;
Description: Write to a peripheral address from the source address using DMA
Source The source address to start reading from
Address The address of the peripheral register to write to
Size The size of the write in bytes
Peripheral The peripheral ID for data request gating (eg DMA_DREQ_ID_UART_TX)


function DMAAllocateBuffer(Size:LongWord):Pointer; inline;
Description: Allocate a buffer compatible with DMA memory reads or writes
Size The size of the buffer to allocate


function DMAAllocateBufferEx(var Size:LongWord):Pointer; inline;
Description: Allocate a buffer compatible with DMA memory reads or writes
Size The size of the buffer to allocate (Updated on return to actual size)


function DMAReleaseBuffer(Buffer:Pointer):LongWord; inline;
Description: Release a buffer allocated with DMAAllocateBuffer
Buffer The buffer to be released


function DMAGetChannels:LongWord; inline;
Description: Get the currently enabled DMA channel bitmap (If supported)
Note None documented


GPIO functions

function GPIOAvailable:Boolean; inline;
Description: Check if a GPIO device is available
Reg The memory register to read from
Value The value of the memory register


function GPIORead(Reg:LongWord):LongWord; inline;
Description: Perform a direct read from a GPIO register
Reg The memory register to read from
Value The value of the memory register


procedure GPIOWrite(Reg,Value:LongWord); inline;
Description: Perform a direct write to a GPIO register
Reg The memory register to write to
Value The value to write to the register


function GPIOInputGet(Pin:LongWord):LongWord; inline;
Description: Get the current state of a GPIO input pin
Pin The pin to get the state for (eg GPIO_PIN_1)
Return The current state (eg GPIO_LEVEL_HIGH) or GPIO_LEVEL_UNKNOWN on failure


function GPIOInputWait(Pin,Trigger,Timeout:LongWord):LongWord; inline;
Description: Wait for the state of a GPIO input pin to change
Pin The pin to wait for the state to change (eg GPIO_PIN_1)
Trigger The trigger event to wait for (eg GPIO_TRIGGER_HIGH)
Timeout Number of milliseconds to wait for the change (INFINITE to wait forever)
Return The state after the change (eg GPIO_LEVEL_HIGH) or GPIO_LEVEL_UNKNOWN on failure or timeout


function GPIOInputEvent(Pin,Trigger,Timeout:LongWord; Callback:TGPIOCallback; Data:Pointer):LongWord; inline;
Description: Schedule a function to be called when the state of a GPIO input pin changes
Pin The pin to schedule the state change for (eg GPIO_PIN_1)
Trigger The trigger event which will cause the function to be called (eg GPIO_TRIGGER_HIGH)
Timeout The number of milliseconds before the scheduled trigger expires (INFINITE to never expire)
Callback The function to be called when the trigger occurs
Data A pointer to be pass to the function when the trigger occurs (Optional)
Return ERROR_SUCCESS if the trigger was scheduled successfully or another error code on failure
Note The pin and trigger that caused the event will be passed to the callback function


function GPIOOutputSet(Pin,Level:LongWord):LongWord; inline;
Description: Change the state of a GPIO output pin
Pin The pin to change the state for (eg GPIO_PIN_1)
Level The state to change the pin to (eg GPIO_LEVEL_HIGH)
Return ERROR_SUCCESS if completed successfully or another error code on failure


function GPIOPullGet(Pin:LongWord):LongWord; inline;
Description: Get the current pull state of a GPIO pin
Pin The pin to get the pull state for (eg GPIO_PIN_1)
Return The current pull state of the pin (eg GPIO_PULL_UP) or GPIO_PULL_UNKNOWN on failure


function GPIOPullSelect(Pin,Mode:LongWord):LongWord; inline;
Description: Change the pull state of a GPIO pin
Pin The pin to change the pull state for (eg GPIO_PIN_1)
Mode The pull state to set for the pin (eg GPIO_PULL_UP)
Return ERROR_SUCCESS if completed successfully or another error code on failure


function GPIOFunctionGet(Pin:LongWord):LongWord; inline;
Description: Get the current function of a GPIO pin
Pin The pin to get the function for (eg GPIO_PIN_1)
Return The current function of the pin (eg GPIO_FUNCTION_IN) or GPIO_FUNCTION_UNKNOWN on failure


function GPIOFunctionSelect(Pin,Mode:LongWord):LongWord; inline;
Description: Change the function of a GPIO pin
Pin The pin to change the function for (eg GPIO_PIN_1)
Mode The function to set for the pin (eg GPIO_FUNCTION_OUT)
Return ERROR_SUCCESS if completed successfully or another error code on failure


Virtual GPIO functions

function VirtualGPIOInputGet(Pin:LongWord):LongWord; inline;
Description: Get the current state of a virtual GPIO input pin
Pin The pin to get the state for (eg VIRTUAL_GPIO_PIN_1)
Return The current state (eg GPIO_LEVEL_HIGH) or GPIO_LEVEL_UNKNOWN on failure


function VirtualGPIOOutputSet(Pin,Level:LongWord):LongWord; inline;
Description: To be documented
Note None documented


function VirtualGPIOFunctionSelect(Pin,Mode:LongWord):LongWord; inline;
Description: To be documented
Note None documented


SPI functions

function SPIAvailable:Boolean; inline;
Description: Check if an SPI device is available
Note None documented


function SPIStart(Mode,ClockRate,ClockPhase,ClockPolarity:LongWord):LongWord; inline;
Description: Start the default SPI device ready for writing and reading
Mode The device mode to set (eg SPI_MODE_4WIRE)
ClockRate The clock rate to set for the device
ClockPhase The clock phase to set (eg SPI_CLOCK_PHASE_LOW)
ClockPolarity The clock polarity to set (eg SPI_CLOCK_POLARITY_LOW)
Return ERROR_SUCCESS if completed or another error code on failure


function SPIStop:LongWord; inline;
Description: Stop the default SPI device and terminate writing and reading
Return ERROR_SUCCESS if completed or another error code on failure


function SPIRead(ChipSelect:Word; Dest:Pointer; Size:LongWord; var Count:LongWord):LongWord; inline;
Description: Read data from the default SPI device. Because SPI writes and then reads for each byte, dummy data will be written for each byte to be read.
ChipSelect The chip select for the slave to read from (eg SPI_CS_0)
Dest Pointer to a buffer to receive the data
Size The size of the buffer
Count The number of bytes read on return
Return ERROR_SUCCESS if completed or another error code on failure


function SPIWrite(ChipSelect:Word; Source:Pointer; Size:LongWord; var Count:LongWord):LongWord; inline;
Description: Write data to the default SPI device. Because SPI writes and then reads for each byte, received data will be discarded for each by written.
ChipSelect The chip select for the slave to write to (eg SPI_CS_0)
Source Pointer to a buffer of data to transmit
Size The size of the buffer
Count The number of bytes written on return
Return ERROR_SUCCESS if completed or another error code on failure


function SPIWriteRead(ChipSelect:Word; Source,Dest:Pointer; Size:LongWord; var Count:LongWord):LongWord; inline;
Description: Write data to and Read data from the default SPI device in one operation. Because SPI writes and then reads for each byte, both the source and dest buffers must be the same size.
ChipSelect The chip select for the slave to write to and read from (eg SPI_CS_0)
Source Pointer to a buffer of data to transmit
Dest Pointer to a buffer to receive the data
Size The size of the buffer
Count The number of bytes written and read on return
Return ERROR_SUCCESS if completed or another error code on failure


function SPIGetMode:LongWord; inline;
Description: Get the device mode of the default SPI device
Return The device mode or SPI_MODE_UNKNOWN on failure


function SPISetMode(Mode:LongWord):LongWord; inline;
Description: Set the device mode for the default SPI device
Mode The device mode to set (eg SPI_MODE_4WIRE)
Return ERROR_SUCCESS if completed or another error code on failure


function SPIGetClockRate(ChipSelect:Word):LongWord; inline;
Description: Get the clock rate of the default SPI device
ChipSelect The chip select number to get clock rate from (SPI_CS_NONE for default)
Return The clock rate in Hz or 0 on failure


function SPISetClockRate(ChipSelect:Word;ClockRate:LongWord):LongWord; inline;
Description: Set the clock rate for the default SPI device
ClockRate The clock rate to set in Hz
ChipSelect The chip select number to set clock rate for (SPI_CS_NONE for default)
Return ERROR_SUCCESS if completed or another error code on failure


function SPIGetClockPhase:LongWord; inline;
Description: Get the clock phase of the default SPI device
Return The clock phase or SPI_CLOCK_PHASE_UNKNOWN on failure


function SPISetClockPhase(ClockPhase:LongWord):LongWord; inline;
Description: Set the clock phase for the default SPI device
ClockPhase The clock phase to set (eg SPI_CLOCK_PHASE_LOW)
Return ERROR_SUCCESS if completed or another error code on failure


function SPIGetClockPolarity:LongWord; inline;
Description: Get the clock polarity of the default SPI device
Return The clock polarity or SPI_CLOCK_POLARITY_UNKNOWN on failure


function SPISetClockPolarity(ClockPolarity:LongWord):LongWord; inline;
Description: Set the clock polarity for the default SPI device
ClockPolarity The clock polarity to set (eg SPI_CLOCK_POLARITY_LOW)
Return ERROR_SUCCESS if completed or another error code on failure


function SPIGetSelectPolarity(ChipSelect:Word):LongWord; inline;
Description: Get the chip select polarity of the default SPI device
ChipSelect The chip select number to get polarity from (SPI_CS_NONE for default)
Return The chip select polarity or SPI_CS_POLARITY_UNKNOWN on failure


function SPISetSelectPolarity(ChipSelect:Word; SelectPolarity:LongWord):LongWord; inline;
Description: Set the chip select polarity for the default SPI device
ChipSelect The chip select number to set polarity for (SPI_CS_NONE for default)
SelectPolarity The chip select polarity to set (eg SPI_CS_POLARITY_LOW)
Return ERROR_SUCCESS if completed or another error code on failure


I2C functions

function I2CAvailable:Boolean; inline;
Description: Check if an I2C device is available
Note None documented


function I2CStart(Rate:LongWord):LongWord; inline;
Description: Start the default I2C device ready for reading and writing
Rate The clock rate to set for the device (0 to use the default rate)
Return ERROR_SUCCESS if completed or another error code on failure


function I2CStop:LongWord; inline;
Description: Stop the default I2C device and terminate reading and writing
Return ERROR_SUCCESS if completed or another error code on failure


function I2CRead(Address:Word; Buffer:Pointer; Size:LongWord; var Count:LongWord):LongWord; inline;
Description: Read data from the default I2C device
Address The slave address to read from (I2C_ADDRESS_INVALID to use the current address)
Buffer Pointer to a buffer to receive the data
Size The size of the buffer
Count The number of bytes read on return
Return ERROR_SUCCESS if completed or another error code on failure


function I2CWrite(Address:Word; Buffer:Pointer; Size:LongWord; var Count:LongWord):LongWord; inline;
Description: Write data to the default I2C device
Address The slave address to write to (I2C_ADDRESS_INVALID to use the current address)
Buffer Pointer to a buffer of data to transmit
Size The size of the buffer
Count The number of bytes written on return
Return ERROR_SUCCESS if completed or another error code on failure


function I2CWriteRead(Address:Word; Initial:Pointer; Len:LongWord; Data:Pointer; Size:LongWord; var Count:LongWord):LongWord; inline;
Description: Write data to and Read data from the default I2C device in one operation. Useful for devices that require a register address specified before a read (eg EEPROM devices)
Address The slave address to write to (I2C_ADDRESS_INVALID to use the current address)
Initial Pointer to the initial buffer to transmit
Len The size of the initial buffer
Data Pointer to a buffer to receive the data
Size The size of the data buffer
Count The number of bytes read on return
Return ERROR_SUCCESS if completed or another error code on failure


function I2CWriteWrite(Address:Word; Initial:Pointer; Len:LongWord; Data:Pointer; Size:LongWord; var Count:LongWord):LongWord; inline;
Description: Write 2 data blocks to the default I2C device in one operation. Useful for devices that require a register address specified before a write (eg EEPROM devices)
Address The slave address to write to (I2C_ADDRESS_INVALID to use the current address)
Initial Pointer to the initial buffer to transmit
Len The size of the initial buffer
Data Pointer to a buffer of data to transmit
Size The size of the data buffer
Count The number of bytes of data written on return
Return ERROR_SUCCESS if completed or another error code on failure


function I2CGetRate:LongWord; inline;
Description: Get the clock rate of the default I2C device
Return The clock rate in Hz or 0 on failure


function I2CSetRate(Rate:LongWord):LongWord; inline;
Description: Set the clock rate for the default I2C device
Rate The clock rate to set in Hz
Return ERROR_SUCCESS if completed or another error code on failure


function I2CGetAddress:Word; inline;
Description: Get the slave address for the default I2C device
Return The slave address or I2C_ADDRESS_INVALID on failure


function I2CSetAddress(Address:Word):LongWord; inline;
Description: Set the slave address for the default I2C device
Address The slave address to set
Return ERROR_SUCCESS if completed or another error code on failure


PWM functions

function PWMAvailable:Boolean; inline;
Description: Check if a PWM device is available
Note None documented


function PWMStart:LongWord; inline;
Description: Start the default PWM device
Return ERROR_SUCCESS if completed or another error code on failure


function PWMStop:LongWord; inline;
Description: Stop the default PWM device
Return ERROR_SUCCESS if completed or another error code on failure


function PWMWrite(Value:LongWord):LongWord; inline;
Description: Write a value to the default PWM device
Value The value to write
Return ERROR_SUCCESS if completed or another error code on failure
Note The exact meaning of value may depend on the device and other configured options, in many cases the value will represent the "on" time of each pulse with regard to the duty cycle of the waveform output by the device


function PWMSetMode(Mode:LongWord):LongWord; inline;
Description: Set the mode for the default PWM device
Mode The mode value to set (eg PWM_MODE_MARKSPACE)
Return ERROR_SUCCESS if completed or another error code on failure


function PWMSetRange(Range:LongWord):LongWord; inline;
Description: Set the range for the default PWM device
Range The range value to set
Return ERROR_SUCCESS if completed or another error code on failure
Note The exact meaning of range may depend on the device and other configured options, in many cases the range will represent the period of one full cycle of the waveform output by the device


function PWMSetFrequency(Frequency:LongWord):LongWord; inline;
Description: Set the clock frequency for the default PWM device
Frequency The frequency to set in Hz
Return ERROR_SUCCESS if completed or another error code on failure


function PWMConfigure(DutyNS,PeriodNS:LongWord):LongWord; inline;
Description: Set the configuration of the default PWM device
DutyNS The "on" time part of the cycle (Nanoseconds)
PeriodNS The duration of one full cycle (Nanoseconds)
Return ERROR_SUCCESS if completed or another error code on failure


RTC functions

function RTCAvailable:Boolean; inline;
Description: Check if a Real Time Clock (RTC) device is available
Note None documented


function RTCGetTime:Int64; inline;
Description: Get the current time from a Real Time Clock device
Note Returned time is 100 nanosecond ticks since 1 January 1601. The same format as the ClockGetTime function.


function RTCSetTime(const Time:Int64):Int64; inline;
Description: Set the current time for a Real Time Clock device
Time The time to be set
Return The device time after setting (or 0 on failure)
Note Time and returned time is 100 nanosecond ticks since 1 January 1601. The same format as the ClockSetTime function.


Serial functions

function SerialAvailable:Boolean; inline;
Description: Check if a Serial device is available
Note None documented


function SerialOpen(BaudRate,DataBits,StopBits,Parity,FlowControl,ReceiveDepth,TransmitDepth:LongWord):LongWord; inline;
Description: Open the default Serial device ready for sending and receiving
BaudRate Baud rate for the connection (eg 9600, 57600, 115200 etc
DataBits Size of the data (eg SERIAL_DATA_8BIT)
StopBits Number of stop bits (eg SERIAL_STOP_1BIT)
Parity Parity type for the data (eg SERIAL_PARITY_NONE)
FlowControl Flow control for the connection (eg SERIAL_FLOW_NONE)
ReceiveDepth Size of the receive buffer (0 = Default size)
TransmitDepth Size of the transmit buffer (0 = Default size)


function SerialClose:LongWord; inline;
Description: Close the default Serial device and terminate sending and receiving
Note None documented


function SerialRead(Buffer:Pointer; Size:LongWord; var Count:LongWord):LongWord; inline;
Description: Read data from the default Serial device
Buffer Pointer to a buffer to receive the data
Size The size of the buffer
Count The number of bytes read on return


function SerialWrite(Buffer:Pointer; Size:LongWord; var Count:LongWord):LongWord; inline;
Description: Write data to the default Serial device
Buffer Pointer to a buffer of data to transmit
Size The size of the buffer
Count The number of bytes written on return


Peripheral functions

function PeripheralGetBase:PtrUInt; inline;
Description: Get the base address of the peripherals
Note None documented


function PeripheralGetSize:LongWord; inline;
Description: Get the total size of the peripherals
Note None documented


function PeripheralRead(Base,Reg:LongWord):LongWord; inline;
Description: Read from a Peripheral register
Note None documented


procedure PeripheralWrite(Base,Reg,Value:LongWord); inline;
Description: Write to a Peripheral register
Note None documented


function LocalPeripheralGetBase:PtrUInt; inline;
Description: Get the base address of the local peripherals (Peripherals local to each CPU)
Note None documented


function LocalPeripheralGetSize:LongWord; inline;
Description: Get the total size of the local peripherals (Peripherals local to each CPU)
Note None documented


System functions

function GetSP:PtrUInt; inline;
Description: Get the current stack pointer (SP)
Note None documented


function GetPC:PtrUInt; inline;
Description: Get the current program counter (PC)
Note None documented


function GetIRQ:Boolean; inline;
Description: Get Interrupts (IRQ) state
Return True is enabled, False if disabled


procedure EnableIRQ; inline;
Description: Enable Interrupts (IRQ) unconditionally
Note None documented


procedure DisableIRQ; inline;
Description: Disable Interrupts (IRQ) unconditionally
Note None documented


function SaveIRQ:TIRQMask; inline;
Description: Disable Interrupts (IRQ) and return the previous state
Return IRQ state when called


function RestoreIRQ(IRQMask:TIRQMask):TIRQMask; inline;
Description: Restore Interrupts (IRQ) to a previous state
IRQMask IRQ state to restore
Return IRQ state when called


function GetFIQ:Boolean; inline;
Description: Get Fast Interrupts (FIQ) state
Return True is enabled, False if disabled


procedure EnableFIQ; inline;
Description: Enable Fast Interrupts (FIQ) unconditionally
Note None documented


procedure DisableFIQ; inline;
Description: Disable Fast Interrupts (FIQ) unconditionally
Note None documented


function SaveFIQ:TFIQMask; inline;
Description: Disable Fast Interrupts (FIQ) and return the previous state
Return FIQ state when called


function RestoreFIQ(FIQMask:TFIQMask):TFIQMask; inline;
Description: Restore Fast Interrupts (FIQ) to a previous state
FIQMask FIQ state to restore
Return FIQ state when called


procedure EnableIRQFIQ; inline;
Description: Enable Interrupts and Fast Interrupts (IRQ/FIQ) unconditionally
Note None documented


procedure DisableIRQFIQ; inline;
Description: Disable Interrupts and Fast Interrupts (IRQ/FIQ) unconditionally
Note None documented


function SaveIRQFIQ:TIRQFIQMask; inline;
Description: Disable Interrupts and Fast Interrupts (IRQ/FIQ) and return the previous state
Return IRQ/FIQ state when called


function RestoreIRQFIQ(IRQFIQMask:TIRQFIQMask):TIRQFIQMask; inline;
Description: Restore Interrupts and Fast Interrupts (IRQ/FIQ) to a previous state
IRQFIQMask IRQ/FIQ state to restore
Return IRQ/FIQ state when called


function GetAbort:Boolean; inline;
Description: Get Abort state
Return True is enabled, False if disabled


procedure EnableAbort; inline;
Description: Enable Abort unconditionally
Note None documented


procedure DisableAbort; inline;
Description: Disable Abort unconditionally
Note None documented


function SaveAbort:TAbortMask; inline;
Description: Disable Abort and return the previous state
Return Abort state when called


function RestoreAbort(AbortMask:TAbortMask):TAbortMask; inline;
Description: Restore Abort to a previous state
AbortMask Abort state to restore
Return Abort state when called


procedure Halt; inline;
Description: Halt the current processor
Note None documented


procedure Pause; inline;
Description: Pause the current processor and wait for an Event or Interrupt (Where Applicable)
Note None documented


function HaltThread(ExitCode:LongWord):LongWord; inline;
Description: Halt the current thread
Note None documented


procedure SendEvent; inline;
Description: Send a signal that an Event has occurred (Where Applicable)
Note None documented


procedure WaitForEvent; inline;
Description: Wait for an Event to occur (Where Applicable)
Note None documented


procedure WaitForInterrupt; inline;
Description: Wait for an Interrupt to occur (Where Applicable)
Note None documented


procedure ReadMemoryBarrier; inline;
Description: Perform a Read Memory Barrier operation (Where Applicable)
Note None documented


procedure WriteMemoryBarrier; inline;
Description: Perform a Write Memory Barrier operation (Where Applicable)
Note None documented


procedure DataMemoryBarrier; inline;
Description: Perform a Data Memory Barrier operation (Where Applicable)
Note None documented


procedure DataSynchronizationBarrier; inline;
Description: Perform a Data Synchronization Barrier operation (Where Applicable)
Note None documented


procedure InstructionMemoryBarrier; inline;
Description: Perform an Instruction Memory Barrier operation (Where Applicable)
Note None documented


procedure InvalidateTLB; inline;
Description: Perform an Invalidate Entire TLB operation (Where Applicable)
Note None documented


procedure InvalidateDataTLB; inline;
Description: Perform an Invalidate Data TLB operation (Where Applicable)
Note None documented


procedure InvalidateInstructionTLB; inline;
Description: Perform an Invalidate Instruction TLB operation (Where Applicable)
Note None documented


procedure InvalidateCache; inline;
Description: Perform an Invalidate Entire Cache operation (Where Applicable)
Note None documented


procedure CleanDataCache; inline;
Description: Perform a Clean Data Cache operation (Where Applicable)
Note None documented


procedure InvalidateDataCache; inline;
Description: Perform an Invalidate Data Cache operation (Where Applicable)
Note None documented


procedure CleanAndInvalidateDataCache; inline;
Description: Perform a Clean and Invalidate Data Cache operation (Where Applicable)
Note None documented


procedure InvalidateInstructionCache; inline;
Description: Perform an Invalidate Instruction Cache operation (Where Applicable)
Note None documented


procedure CleanDataCacheRange(Address,Size:LongWord); inline;
Description: Perform a Clean Data Cache Range operation (Where Applicable)
Note None documented


procedure InvalidateDataCacheRange(Address,Size:LongWord); inline;
Description: Perform an Invalidate Data Cache Range operation (Where Applicable)
Note None documented


procedure CleanAndInvalidateDataCacheRange(Address,Size:LongWord); inline;
Description: Perform a Clean and Invalidate Data Cache Range operation (Where Applicable)
Note None documented


procedure InvalidateInstructionCacheRange(Address,Size:LongWord); inline;
Description: Perform an Invalidate Instruction Cache Range operation (Where Applicable)
Note None documented


procedure FlushPrefetchBuffer; inline;
Description: Perform a Flush Prefetch Buffer operation (Where Applicable)
Note None documented


procedure FlushBranchTargetCache; inline;
Description: Perform a Flush Entire Branch Target Cache operation (Where Applicable)
Note None documented


procedure ContextSwitch(OldStack,NewStack:Pointer; NewThread:TThreadHandle); inline;
Description: Perform a Context Switch from one thread to another
Note None documented


procedure ContextSwitchIRQ(OldStack,NewStack:Pointer; NewThread:TThreadHandle); inline;
Description: Perform a Context Switch from one thread to another from an IRQ handler
Note None documented


procedure ContextSwitchFIQ(OldStack,NewStack:Pointer; NewThread:TThreadHandle); inline;
Description: Perform a Context Switch from one thread to another from an FIQ handler
Note None documented


procedure ContextSwitchSWI(OldStack,NewStack:Pointer; NewThread:TThreadHandle); inline;
Description: Perform a Context Switch from one thread to another from a software interrupt handler
Note None documented


function InterlockedOr(var Target:LongInt;Value:LongInt):LongInt; inline;
Description: Perform an atomic OR operation
Note None documented


function InterlockedXor(var Target:LongInt; Value:LongInt):LongInt; inline;
Description: Perform an atomic XOR operation
Note None documented


function InterlockedAnd(var Target:LongInt; Value:LongInt):LongInt; inline;
Description: Perform an atomic AND operation
Note None documented


function InterlockedDecrement(var Target:LongInt):LongInt; inline;
Description: Perform an atomic decrement operation
Note None documented


function InterlockedIncrement(var Target:LongInt):LongInt; inline;
Description: Perform an atomic increment operation
Note None documented


function InterlockedExchange(var Target:LongInt; Source:LongInt):LongInt; inline;
Description: Perform an atomic exchange operation
Note None documented


function InterlockedAddExchange(var Target:LongInt; Source:LongInt):LongInt; inline;
Description: Perform an atomic add and exchange operation
Note None documented


function InterlockedCompareExchange(var Target:LongInt; Source,Compare:LongInt):LongInt; inline;
Description: Perform an atomic compare and exchange operation
Note None documented


function PageTableGetBase:PtrUInt; inline;
Description: Get the base address of the first level page table
Note None documented


function PageTableGetSize:LongWord; inline;
Description: Get the size of the first level page table
Note None documented


function PageTableGetEntry(Address:PtrUInt):TPageTableEntry; inline;
Description: Get the Page Table entry that corresponds to the supplied virtual address
Note None documented


function PageTableSetEntry(const Entry:TPageTableEntry):LongWord; inline;
Description: Set the Page Table entry that corresponds to the supplied virtual address
Note None documented


function PageTablesGetAddress:PtrUInt; inline;
Description: Get the address of the second level page tables
Note None documented


function PageTablesGetLength:LongWord; inline;
Description: Get the size of the second level page tables
Note None documented


function PageTablesGetCount:LongWord; inline;
Description: Get the number of second level page tables
Note None documented


function PageTablesGetShift:LongWord; inline;
Description: Get the multiplier to convert count to actual size of the second level page tables
Note None documented


function PageTablesGetNext:PtrUInt; inline;
Description: Get the address of the next available second level page table
Note None documented


function PageTablesGetUsed:LongWord; inline;
Description: Get the number of used second level page tables
Note None documented


function PageTablesGetFree:LongWord; inline;
Description: Get the number of available second level page tables
Note None documented


function VectorTableGetBase:PtrUInt; inline;
Description: Get the base address of the interrupt vector table
Note None documented


function VectorTableGetSize:LongWord; inline;
Description: Get the size in bytes of the interrupt vector table
Note None documented


function VectorTableGetCount:LongWord; inline;
Description: Get the number of entries in the interrupt vector table
Note None documented


function VectorTableGetEntry(Number:LongWord):PtrUInt; inline;
Description: Get the interrupt vector table entry that corresponds to the supplied number
Note None documented


function VectorTableSetEntry(Number:LongWord; Address:PtrUInt):LongWord; inline;
Description: Set the interrupt vector table entry that corresponds to the supplied number
Note None documented


Exception functions

procedure HardwareException(AType:LongWord; Address,Frame:Pointer);
Description: To be documented
Note None documented


procedure UnhandledException(Obj:TObject; Addr:CodePointer; FrameCount:LongInt; Frames:PCodePointer); {[public,alias:'FPC_BREAK_UNHANDLED_EXCEPTION'];}
Description: To be documented
Note None documented


Text IO functions

procedure TextIOOpen(var F:Text; AWrite:TTextIOWriteChar; ARead:TTextIOReadChar; AMode:LongInt; AUserData:Pointer);
Description: To be documented
Note None documented


procedure TextIOClose(var T:TextRec);
Description: To be documented
Note None documented


procedure TextIORead(var T:TextRec);
Description: To be documented
Note None documented


procedure TextIOWrite(var T:TextRec);
Description: To be documented
Note None documented


function TextIOReadData(ARead:TTextIOReadChar; AUserData:Pointer; ABuffer:PChar; ACount:LongInt):LongInt;
Description: To be documented
Note None documented


Console functions

function ConsoleGetKey(var ACh:Char; AUserData:Pointer):Boolean; inline;
Description: To be documented
Note None documented


function ConsolePeekKey(var ACh:Char; AUserData:Pointer):Boolean; inline;
Description: To be documented
Note None documented


function ConsoleWriteChar(ACh:Char; AUserData:Pointer):Boolean; inline;
Description: To be documented
Note None documented


function ConsoleReadChar(var ACh:Char; AUserData:Pointer):Boolean; inline;
Description: To be documented
Note None documented


function ConsoleReadWideChar(var ACh:WideChar; AUserData:Pointer):Boolean; inline;
Description: To be documented
Note None documented


function ConsoleHideMouse(AUserData:Pointer):Boolean; inline;
Description: To be documented
Note None documented


function ConsoleShowMouse(X,Y:LongWord; AUserData:Pointer):Boolean; inline;
Description: To be documented
Note None documented


function ConsoleReadMouse(var X,Y,Buttons:LongWord; AUserData:Pointer):Boolean; inline;
Description: To be documented
Note None documented


CodePage functions

function CodePageToWideChar(Ch:Char):WideChar; inline;
Description: To be documented
Note None documented


function WideCharToCodePage(Ch:WideChar):Char; inline;
Description: To be documented
Note None documented


Name functions

function HostGetName:String; inline;
Description: To be documented
Note None documented


function HostSetName(const AName:String):Boolean; inline;
Description: To be documented
Note None documented


function HostGetDomain:String; inline;
Description: To be documented
Note None documented


function HostSetDomain(const ADomain:String):Boolean; inline;
Description: To be documented
Note None documented


Logging functions

procedure LoggingOutput(const AText:String); inline;
Description: To be documented
Note None documented


procedure LoggingOutputEx(AFacility,ASeverity:LongWord; const ATag,AContent:String); inline;
Description: To be documented
Note None documented


Utility functions

function FirstBitSet(Value:LongWord):LongWord; inline;
Description: Find the first set bit in a nonzero 32 bit value
Note Returns 31 for MSB and 0 for LSB (0xFFFFFFFF / -1 if no bits are set)


function CountLeadingZeros(Value:LongWord):LongWord; inline;
Description: Count the number of leading 0 bits in a nonzero 32 bit value
Note Returns 32 if no bits are set


function PhysicalToIOAddress(Address:Pointer):LongWord; inline;
Description: Convert Physical address to an IO addresses (Where Applicable)
Note None documented


function IOAddressToPhysical(Address:Pointer):LongWord; inline;
Description: Convert an IO address to a Physical address (Where Applicable)
Note None documented


function PhysicalToBusAddress(Address:Pointer):LongWord; inline;
Description: Convert a Physical address to a Bus address (Where Applicable)
Note None documented


function BusAddressToPhysical(Address:Pointer):LongWord; inline;
Description: Convert a Bus address to a Physical address (Where Applicable)
Note None documented


procedure NanosecondDelay(Nanoseconds:LongWord);
Description: Non sleep wait for a number of nanoseconds
Nanseconds Number of nanoseconds to wait


procedure MicrosecondDelay(Microseconds:LongWord);
Description: Non sleep wait for a number of microseconds
Milliseconds Number of microseconds to wait


procedure MillisecondDelay(Milliseconds:LongWord);
Description: Non sleep wait for a number of milliseconds
Milliseconds Number of milliseconds to wait


procedure NanosecondDelayEx(Nanoseconds:LongWord; Wait:Boolean);
Description: Non sleep wait for a number of nanoseconds
Nanoseconds Number of nanoseconds to wait
Wait Use WaitForInterrupt on each loop to reduce power consumption
Note Not suitable for use by interrupt handlers if wait is true


procedure MicrosecondDelayEx(Microseconds:LongWord; Wait:Boolean);
Description: Non sleep wait for a number of microseconds
Milliseconds Number of milliseconds to wait
Wait Use WaitForInterrupt on each loop to reduce power consumption
Note Not suitable for use by interrupt handlers if wait is true


procedure MillisecondDelayEx(Milliseconds:LongWord; Wait:Boolean);
Description: Non sleep wait for a number of milliseconds
Milliseconds Number of milliseconds to wait
Wait Use WaitForInterrupt on each loop to reduce power consumption
Note Not suitable for use by interrupt handlers if wait is true


System random functions

procedure SystemRandomize;
Description: To be documented
Note None documented


Dos conversion functions

function DosGetMsCount:Int64;
Description: To be documented
Note None documented


Dos Info/Date/Time functions

function DosDosVersion:Word;
Description: To be documented
Note None documented


procedure DosGetDate(var Year,Month,MDay,WDay:Word);
Description: To be documented
Note None documented


procedure DosSetDate(Year,Month,Day:Word);
Description: To be documented
Note None documented


procedure DosGetTime(var Hour,Minute,Second,Sec100:Word);
Description: To be documented
Note None documented


procedure DosSetTime(Hour,Minute,Second,Sec100:Word);
Description: To be documented
Note None documented


Dos environment functions

function DosEnvCount:Longint;
Description: To be documented
Note None documented


function DosEnvStr(Index:LongInt):ShortString;
Description: To be documented
Note None documented


function DosGetEnv(EnvVar:ShortString):ShortString; 
Description: To be documented
Note None documented


SysUtils tick functions

function SysUtilsGetTickCount:LongWord;
Description: To be documented
Note None documented


function SysUtilsGetTickCount64:QWord;
Description: To be documented
Note None documented


SysUtils locale functions

procedure SysUtilsGetLocalTime(var SystemTime:TSystemTime);
Description: Get the current local time as a SystemTime value
Note Includes timezone offset if configured


procedure SysUtilsSetLocalTime(const SystemTime:TSystemTime);
Description: Set the current local time from a SystemTime value
Note Includes timezone offset if configured


function SysUtilsGetLocalTimeOffset:Integer;
Description: Get the current local time offset value
Note None documented


Platform helper functions

procedure PlatformLog(Level:LongWord; const AText:String);
Description: To be documented
Note None documented


procedure PlatformLogInfo(const AText:String);
Description: To be documented
Note None documented


procedure PlatformLogError(const AText:String);
Description: To be documented
Note None documented


procedure PlatformLogDebug(const AText:String);
Description: To be documented
Note None documented


Return to Unit Reference