Matrix of Real-Time Functions

NOTE: APIs that are not explicitly documented as supported are not guaranteed to work. You should thoroughly test any code that uses undocumented functions.

RTAPI Function Name

Notes

Deterministic?

RtAcquireFastSemaphore

 

Yes - can block if another thread holds the lock.

RtAllocateContiguousMemory

 

No

RtAllocateLocalMemory

 

Yes, but only when one real-time processor configured.

RtAtoi

3

Yes - the elapsed time for the call is less than 5 microseconds.

RtAttachInterrupt

 

No

RtAttachShutdownHandler

 

No

RtCancelTimer

 

Yes - the elapsed time for the call is less than 5 microseconds.

RtCloseHandle

 

No

RtCreateEvent

2

No

RtCreateMutex

2

No

RtCreateProcess

 

No

RtCreateSemaphore

2

No

RtCreateSharedMemory

 

No

RtCreateTimer

 

No

RtCreateTimerEx

 

No

RtDeleteTimer

 

No

RtDisableInterrupts

 

Yes - the elapsed time for the call is less than 5 microseconds.

RtDisablePortIo

 

No

RtEnableInterrupts

 

Yes - the elapsed time for the call is less than 5 microseconds.

RtEnumProcesses

  No

RtEnumProcessesEx

  No
RtEnumProcessModules  

Yes - the elapsed time for the call is less than 5 microseconds.

RtEnumProxyProcesses   No

RtEnablePortIo

 

No

RtExpandLocalMemory

 

No

RtFreeContiguousMemory

 

No

RtFreeLocalMemory

 

Yes, if one real-time processor configured, otherwise latency depends on the amount of local memory allocated and contention for a lock with other threads allocating/freeing local memory.

RtGenerateEvent  

Yes - the elapsed time for the call is less than 5 microseconds.

RtGetBusDataByOffset

 

No

RtGetClockResolution

 

Yes - the elapsed time for the call is less than 5 microseconds.

RtGetClockTime

 

Yes - the elapsed time for the call is less than 5 microseconds.

RtGetClockTimerPeriod

 

Yes - the elapsed time for the call is less than 5 microseconds.

RtGetCountFastSemaphore

 

Yes - the elapsed time for the call is less than 5 microseconds.

RtGetCurrentProcessorNumber

 

Yes - the elapsed time for the call is less than 5 microseconds.

RtGetDongles   No

RtGetExitCodeProcess

 

Yes - the elapsed time for the call is less than 5 microseconds.

RtGetFlushTLBTickMod

 

Yes

RtGetHalTimerPeriodCounts

  Yes

RtGetLicenses

 

No

RtGetPhysicalAddress

 

No

RtGetProcessAffinityMask

3

Yes - the elapsed time for the call is less than 5 microseconds.

RtGetProcessorInfo   Yes - the elapsed time for the call is less than 5 microseconds.

RtGetProxyThreadPriority (can only be called by Windows applications linked with RTX64)

  No

RtGetRtssTimeAsFileTime

 

Yes - the elapsed time for the call is less than 5 microseconds.

RtGetThreadPriority

1, 3

Yes - the elapsed time for the call is less than 5 microseconds.

RtGetThreadStack

 

No

RtGetThreadTimeQuantum

 

Yes - the elapsed time for the call is less than 5 microseconds.

RtGetThreadTimes

 

Yes - the elapsed time for the call is less than 5 microseconds.

RtGetTimer

 

Yes - the elapsed time for the call is less than 5 microseconds.

RtInitializeFastSemaphore

 

Yes - the elapsed time for the call is less than 5 microseconds.

RtIsDebuggerPresent

  No

RtIsRuntimeLicensed

 

No

RtIsTcpStackLicensed

 

No

RtIsInRtss

 

Yes - the elapsed time for the call is less than 5 microseconds.

RtMapMemory

 

No
RtMonitorControl  

Yes - the elapsed time for the call is less than 5 microseconds.

RtOpenEvent

2

No

RtOpenMutex

2

No

RtOpenProcess

 

No

RtOpenSemaphore

2

No

RtOpenSharedMemory

 

No

RtOpenThread

  No

RtPrintf

3

No

RtPulseEvent

2

Yes - the elapsed time for the call is less than 5 microseconds.

RtQueryLocalMemory

 

Yes - the call is bounded but the amount of time for completion of the call depends on processor type (PIC versus APIC) and processor speed.

RtQueryPciMsiCapability

 

Yes - the elapsed time for the call is less than 5 microseconds.

RtReadPortBufferUchar

 

Yes - the elapsed time for the call is less than 5 microseconds.

RtReadPortBufferUlong

 

Yes - the elapsed time for the call is less than 5 microseconds.

RtReadPortBufferUshort

 

Yes - the elapsed time for the call is less than 5 microseconds.

RtReadPortUchar

 

Yes - the elapsed time for the call is less than 5 microseconds.

RtReadPortUlong

 

Yes - the elapsed time for the call is less than 5 microseconds.

RtReadPortUshort

 

Yes - the elapsed time for the call is less than 5 microseconds.

RtReleaseAllFastSemaphore

 

Yes - the elapsed time for the call is less than 5 microseconds.

RtReleaseFastSemaphore

 

Yes - the elapsed time for the call is less than 5 microseconds.

RtReleaseInterrupt

 

No

RtReleaseMutex

2

Yes, unless the mutex has a higher priority thread waiting on it.

RtReleaseSemaphore

2

Yes, unless the semaphore has a higher priority thread waiting on it.

RtReleaseShutdownHandler

 

No

RtResetEvent

2

Yes - the elapsed time for the call is less than 5 microseconds.

RtResetWatchdog

 

Yes - the elapsed time for the call is less than 5 microseconds.

RtSetFlushTLBTickMod

 

Yes

RtSetBusDataByOffset

 

No

RtSetClockTime

 

No

RtSetEvent

2

Yes, unless the event has a higher priority thread waiting on it.

RtSetHalTimerPeriodCounts

  Yes

RtSetProcessAffinityMask

3

Yes

RtSetProxyThreadPriority (can only be called by Windows applications linked with RTX64)

  No

RtSetRtssTimeAsFileTime

 

Yes - the elapsed time for the call is less than 5 microseconds.

RtSetThreadPriority

1, 3

Yes - the elapsed time for the call is less than 5 microseconds.

RtSetThreadTimeQuantum

 

Yes - the elapsed time for the call is less than 5 microseconds.

RtSetTimer

 

Yes - the elapsed time for the call is less than 5 microseconds.

RtSetTimerRelative

 

Yes - the elapsed time for the call is less than 5 microseconds.

RtShrinkLocalMemory

 

No

RtSleepFt

 

Yes - the elapsed time for the call is less than 5 microseconds.

RtTerminateProcess

 

No

RtTranslateBusAddress

 

No

RtUnmapMemory

 

No

RtWaitForMultipleObjects

 

Yes - the elapsed time for the call is less than 5 microseconds.

RtWaitForSingleObject

 

Yes - the elapsed time for the call is less than 5 microseconds.

RtWPrintf

3

No

RtWritePortBufferUchar

 

Yes - the elapsed time for the call is less than 5 microseconds.

RtWritePortBufferUlong

 

Yes - the elapsed time for the call is less than 5 microseconds.

RtWritePortBufferUshort

 

Yes - the elapsed time for the call is less than 5 microseconds.

RtWritePortUchar

 

Yes - the elapsed time for the call is less than 5 microseconds.

RtWritePortUlong

 

Yes - the elapsed time for the call is less than 5 microseconds.

RtWritePortUshort

 

Yes - the elapsed time for the call is less than 5 microseconds.

RtWtoi

3

Yes - the elapsed time for the call is less than 5 microseconds.

Windows Equivalent Real-Time Functions

The following functions are defined in the real-time API, Rtapi.h, as equivalent to their Windows versions.

RTAPI Function Name

Win32 Equivalent

RtGetLastError 

GetLastError

RtSetLastError

SetLastError

RtCreateThread

CreateThread

RtExitThread

ExitThread

RtGetCurrentThread

GetCurrentThread

RtResumeThread

ResumeThread

RtSuspendThread

SuspendThread

RtTerminateThread

TerminateThread

RtExitProcess

ExitProcess

RtSleep

Sleep

RtSleepEx

SleepEx

A Note about #pragma deprecated Functions in Rtapi.h

The functions listed under #pragma deprecated in the real-time API, Rtapi.h, are actually unsupported, not deprecated. Listing them this way ensures that a warning appears in Visual Studio when a developer attempts to use an unsupported function in Visual Studio.