Real-Time API Functions

This section contains a list of supported RTAPI functions.

RTAPI Function Name

Description

RtAcquireFastSemaphore

Places the thread into a busy wait state until the fast semaphore is released.

RtAllocateContiguousMemory

Allocates physically contiguous memory.

RtAllocateContiguousMemorySpecifyCache

Allocates a range of physically contiguous, cache-aligned memory.

RtAllocateLocalMemory

Allocates memory from the local pool or pool cache of the external allocation space of the current process.

RtAllocateLocalMemoryEx

Allocates memory from a pre-allocated RTSS local memory pool to avoid SRI activity if allocating memory from the Windows memory pool.

RtAllocateLockedMemory

Commits and locks the specified amount of memory to avoid page faults as the memory is used.

RtAtoi

Converts a given string value to an integer.

RtAttachInterrupt

Allows the user to associate an Interrupt Service Thread (IST) and Interrupt Service Routine (ISR) with a line-based or message-based hardware interrupt.

RtAttachShutdownHandler

Registers a stop notification handler function with RTSS. The handler function is called in its own thread when one of the system stop events occurs.

RtCancelTimer

Cancels the expiration of the indicated timer.

RtCloseHandle

Closes an open object handle.

RtCreateEvent

Creates a named or unnamed event object.

RtCreateMutex

Creates an RTSS mutex. A handle is returned to the newly created mutex object.

RtCreateProcess

Creates and starts a new RTSS process. The new RTSS process runs the specified RTSS executable file. RtCreateProcess is supported only in the Windows environment.

RtCreateSemaphore

Creates a named or unnamed semaphore object.

RtCreateSharedMemory

Creates a named region of physical memory that can be mapped by any process.

RtCreateTimer

Creates a timer associated with the specified clock, and returns a handle to the timer.

RtCreateTimerEx

Creates a timer associated with the specified clock, and returns a handle to the timer.

RtDeleteProcThreadAttributeList

Deletes the specified list of attributes for process and thread creation.

RtDeleteTimer

Deletes the timer specified by the given handle.

RtDisableInterrupts

In the Windows environment, RtDisableInterrupts disables all user-level interrupt handling for all interrupts to which the Windows process is attached.

In an RTSS environment, RtDisableInterrupts disables all interrupts at the processor level including timer interrupts.

RtDisablePortIo

Disables direct I/O port access from user context.

RtEnableInterrupts

Enables user-level interrupt handling for all interrupts to which the process is attached.

RtEnablePortIo

Enables direct I/O port access from user context.

RtEnumProcesses

Retrieves the process identifier for each process object.

RtEnumProcessesEx Retrieves the process identifier for each RTSS process object.

RtEnumProcessModules

Retrieves a handle for each module in a specified process.

RtEnumProxyProcesses Enumerates proxy processes associated with Windows processes linked to RTAPI.
RtExpandMSpace Expands the local pool of the specified MSpace by the size specified.

RtFreeContiguousMemory

Frees a previously allocated physically contiguous memory region.

RtFreeLocalMemory Frees memory previously allocated by a call to RtAllocateLocalMemory or RtAllocateLocalMemoryEx.

RtFreeLockedMemory

Frees memory previously committed and locked by a call to RtAllocateLockedMemory.

RtGenerateEvent Generates custom Monitoring Framework events.

RtGetBusDataByOffset

Obtains details, starting at the given offset, about a given slot on an I/O bus.

RtGetClockResolution

Obtains the resolution of the specified clock.

RtGetClockTime

Obtains the current value of the specified clock.

RtGetClockTimerPeriod

Obtains the minimum timer period of the specified clock. The RtGetClockTimecall delivers the clock time as 64-bit quantity of 100ns.

RtGetCountFastSemaphore

Returns the number of threads waiting on this fast semaphore. This information is useful when preparing for a manual release of the fast semaphore.

RtGetCurrentHalTimerPeriod

Returns the current HAL timer period value used by the Subsystem.

RtGetCurrentProcessorNumber

Returns the system-assigned number of the current processor on which the caller is running.

RtGetEnabledXStateFeature

Returns the highest feature for a specified XState feature set supported on the running processor and enabled by RTX64.

RtGetExitCodeProcess

Retrieves the termination status of the specified process.

RtGetFlushTLBTickMod

Allows a RTSS process to query the current flush TLB tick mod set by RtSetFlushTLBTickMod.

RtGetHalTimerPeriodCounts Retrieves the APIC counts per RTX64 HAL timer period.

RtGetLicenses

Retrieves information about licenses installed on the system.

RtGetModuleBaseName

Retrieves the base name of a specified module.

RtGetModuleFileName

Retrieves the fully-qualified path for the file that contains the specified module.

RtGetModuleFileNameEx

Retrieves the fully-qualified path for the file that contains the specified module.

RtGetPciMsixFreeMessages Returns a PCI device’s MSI-X free messages (the MSI-X table entries available for attaching messages).

RtGetPhysicalAddress

Returns the physical address for the virtual address of a contiguous physical memory buffer previously allocated by RtAllocateContiguousMemory.

In the RTSS environment, this function applies to all memory allocation. In the Windows environment, it applies to contiguous memory allocation only.

RtGetProcessAffinityMask

Retrieves the process affinity mask for the specified RTSS process and the system affinity mask for RTSS.

RtGetProcessIdealProcessor

Retrieves the ideal processor for a given RTSS process handle.

RtGetProcessMSpace Retrieves an MSpace descriptor of the external and internal allocation space for the specified RTSS process or system process.

RtGetProcessorInfo

Retrieves the number values for the lowest and highest RTSS processors.

RtGetProcessTimes Retrieves timing information for the specified RTSS process.
RtGetProxyThreadPriority Returns the priority value of the proxy thread associated with the specified Windows thread (can only be called by Windows applications linked with RTX64).
RtGetRDTCapability Returns the system Resource Director Technology (RDT) allocation capability.

RtGetRtssTimeAsFileTime

Gets the current value for RTSS time.

RtGetRuntimeVersionEx

Retrieves the Runtime version of the installed RTX64 product.

RtGetSystemTimes Retrieves an array of system timing information. On a multiprocessor system, values in each of the FILETIME structures will contain system timing information about the RTSS core.
RtGetThreadCLOS Retrieves the Class of Services (CLOS) value of a specified thread.

RtGetThreadPriority

Returns the priority value for the specified thread.

RtGetThreadStack Retrieves the thread stack parameters for an existing thread object.

RtGetThreadTimeQuantum

Gets the current time quantum, in milliseconds, for the specified thread.

NOTE: This function is deprecated and will be removed from a future release. Use RtGetTimeQuantum.

RtGetThreadTimeQuantumEx

Gets the current time quantum, in microseconds, for the specified thread.

NOTE: This function is deprecated and will be removed from a future release. Use RtGetTimeQuantum.

RtGetThreadTimes

Retrieves timing information for the specified RTSS thread. This function can only be called in RTSS processes.

RtGetTimeQuantum Retrieves the time quantum, in milliseconds, of a specified thread.

RtGetTimer

Returns the remaining relative time until the next expiration of the specified timer.

RtInitializeFastSemaphore

Initializes a fast semaphore object.

RtInitializeProcThreadAttributeList

Initializes a specified list of attributes for process and thread creation.

RtIsAppRunnable

Allows RTSS applications to validate an application's RTSS signature.

RtIsDebuggerPresent

Determines whether a local real-time process is attached to the IntervalZero Real-Time Debugger.

RtIsDefaultLocalMemory Returns the default memory allocation configuration (local or Windows) for the Subsystem and RTSS applications.

RtIsInRtss

Provides the ability to determine whether code is running in RTSS or Windows.

RtIsRuntimeLicensed

Verifies that a specified RTX64 Runtime is installed and has a valid license.

RtIsTcpStackLicensed

Verifies that a specified RTX64 RT-TCP/IP Stack component is installed and has a valid license.

RtMapMemory

Maps a range of physical memory addresses into the user's virtual address space.

RtMonitorChangeState Transitions between monitoring session states.
RtMonitorControl Performs various monitoring control operations.
RtMonitorEnableComponents Transiently enables generation of monitor events by one or more RTX64 product components
RtMonitorGetEnabledComponents Retrieves the transient configuration of RTX64 product components that currently have monitoring event generation enabled

RtMonitorGetMaxEventsInSession

Retrieves the transient value of the maximum number of events to collect in a monitoring session.

RtMonitorGetPreTriggerEventsToSave

Retrieves the transient value of the number of pre-trigger events to save in a monitor session. Pre-trigger events are events that occur before the event type(s) that triggers the start of a monitoring session.
RtMonitorSetCustomTriggers Transiently sets the custom event types that will trigger the start of a monitoring session.

RtMonitorSetEvents

Enables or disables collection of events during a monitoring session.

RtMonitorSetMaxEventsInSession

Sets the transient value of the maximum number of events to collect in a monitoring session.

RtMonitorSetPreTriggerEventsToSave

Sets the transient value of the number of pre-trigger events to save in a monitor session. Pre-trigger events are events that occur before the event type(s) that triggers the start of a monitoring session.
RtMonitorSetTriggers Transiently sets the event types that will trigger the start of a monitoring session.

RtOpenEvent

Returns a handle of an existing named event object.

RtOpenMutex

Returns a handle to the named RTSS mutex.

RtOpenProcess

Returns a handle to an existing process object.

RtOpenSemaphore

Returns a handle of an existing named semaphore object.

RtOpenSharedMemory

Opens a named physical-mapping object.

RtOpenThread Opens an existing thread object and returns a handle to that thread object.

RtPrintf

Prints formatted output to the standard output stream or console window.

RtPulseEvent

Provides a single operation that sets (to signaled) the state of the specified event object and then resets it (to non-signaled) after releasing the appropriate number of waiting threads.

RtQueryComponent Returns status information on installed Subsystem components.

RtQueryPciMsiCapability

Allows a user to query a PCI device and determine if the device has MSI or MSI-X capability. RtQueryPciMsiCapability is only supported in the RTSS environment. It cannot be called from a Windows application linked to RTX.

RtQueryPerformanceCounter

Retrieves the current value of the high-resolution performance counter (based on processor’s time-stamp counter, TSC).

RtQueryPerformanceFrequency

Retrieves the frequency of the high-resolution performance counter (based on processor’s time-stamp counter, TSC).

RtQueryProcessMSpace Queries memory allocation space information in the specified process MSpace, including various summary statistics of its local pool and pool cache.
RtQueryProcessorVectorFreeCount Queries the number of RTSS processor vectors (IDT vectors) currently available for attaching interrupts.
RtQuerySharedMemory Retrieves shared memory information.
RtQuerySystemPerfCaps Queries the performance capability of each logical processor for the specified ClassID.
RtQueryThreadPerfIdealProcessor Queries the thread’s current Class ID, the performance ideal processor, the current performance capability of affinity logical processor, and the performance capability of each logical processor based on hardware feedback.

RtReadPortBufferUchar

Calls copy data from an I/O port to a buffer until the buffer has been filled using a number of bytes that you specify for each read operation.

RtReadPortBufferUlong

Calls copy data from an I/O port to a buffer until the buffer has been filled using a number of bytes that you specify for each read operation.

RtReadPortBufferUshort

Calls copy data from an I/O port to a buffer until the buffer has been filled using a number of bytes that you specify for each read operation.

RtReadPortUchar

Calls read data directly from an I/O port. Each function reads a different number of bytes of data.

RtReadPortUlong

Calls read data directly from an I/O port. Each function reads a different number of bytes of data.

RtReadPortUshort

Calls read data directly from an I/O port. Each function reads a different number of bytes of data.

RtReleaseAllFastSemaphore

Releases all threads waiting on the fast semaphore. Ensures that all waiting threads enter the ready-to-run state. Ensures that no new threads enter the busy wait state until all current waiters have become runnable.

RtReleaseFastSemaphore

Releases the specified count of threads waiting on the fast semaphore. If the number of waiting threads is less than the specified count, RtReleaseFastSemaphore will store the remaining count value and continue to release new threads that call RtAcquireFastSemaphore on this fast semaphore.

RtReleaseInterrupt

Releases an interrupt previously attached using RtAttachInterrupt. This breaks the association between a user's interrupt handling routine and the hardware interrupt.

RtReleaseMutex

Relinquishes ownership of an RTSS mutex.

RtReleaseSemaphore

Increases the count of the specified semaphore object by a specified amount.

RtReleaseShutdownHandler

Destroys the shutdown handler object created by RtAttachShutdownHandler.

RtResetEvent

Sets the state of the specified event object to non-signaled.

RtResetWatchdog

Resets the watchdog timer counter on the specified RTSS core(s).

RtSetBusDataByOffset

Sets bus-configuration data for a device on a dynamically configurable I/O bus with a published, standard interface.

RtSetClockTime

Sets the current value of the specified clock.

RtSetEvent

Sets the state of the specified event object to signaled.

RtSetFlushTLBTickMod

Allows a RTSS process to set the flush TLB tick mod.

RtSetHalTimerPeriodCounts Sets the APIC counts per RTX64 HAL timer period.

RtSetProcessAffinityMask

Sets a processor affinity mask for the threads of the specified RTSS process.

RtSetProxyThreadPriority Sets the proxy thread priority for the associated Windows thread, but will not change the Windows thread priority (can only be called by Windows applications linked with RTX64).

RtSetRtssTimeAsFileTime

Sets the new value for RTSS time.

RtSetThreadCLOS Overwrites a thread’s implicit or default Class of Services (CLOS), which is based on its priority.

RtSetThreadPriority

Sets the priority value for the specified thread.

RtSetThreadTimeQuantum

Sets the time quantum for the specified thread.

NOTE: This function is deprecated and will be removed from a future release. Use RtSetTimeQuantum.

RtSetThreadTimeQuantumEx

Sets the time quantum, in microseconds, for the specified thread.

NOTE: This function is deprecated and will be removed from a future release. Use RtSetTimeQuantum.

RtSetTimeQuantum Sets the time quantum, in milliseconds, of a specified thread.

RtSetTimer

Sets the expiration time and repeat interval on the specified timer.

RtSetTimerRelative

Sets the expiration time and repeat interval on the specified timer.

RtShrinkMSpace Shrinks the local pool of the specified MSpace up to the size specified.

RtSleepEx

Suspends the current thread until the specified condition is met.

RtSleepFt

Suspends the current thread for the specified time.

RtSleepFtEx

Suspends execution of the current thread for a specified time period.

RtStartComponent Starts the specified Subsystem component.
RtStopComponent Stops the specified Subsystem component.

RtTerminateProcess

Terminates the specified process and all of its threads.

RtTranslateBusAddress

Translates a bus-specific address into the corresponding system logical address.

RtUnmapMemory

Releases a mapping made by a previous call to RtMapMemory.

RtUpdateProcThreadAttribute

Updates the specified attribute in a list of attributes for process and thread creation.

RtWaitForMultipleObjects

Allows a thread to wait on one of multiple objects to be signaled.

RtWaitForMultipleObjectsEx

Allows a thread to wait on one of multiple objects to be signaled with high granularity of time-out interval.

RtWaitForSingleObject

Allows a thread to wait on an object to be signaled.

RtWaitForSingleObjectEx

Allows a thread to wait on an object to be signaled with high granularity of time-out interval.

RtWPrintf

Prints formatted output to the standard output stream or console window.

RtWritePortBufferUchar

Calls copy data from a buffer to an I/O port until the buffer has been emptied using a number of bytes that you specify for each write operation.

RtWritePortBufferUlong

Calls copy data from a buffer to an I/O port until the buffer has been emptied using a number of bytes that you specify for each write operation.

RtWritePortBufferUshort

Calls copy data from a buffer to an I/O port until the buffer has been emptied using a number of bytes that you specify for each write operation.

RtWritePortUchar

Calls write data directly to an I/O port from a specified buffer. Each function writes a different number of bytes of data.

RtWritePortUlong

Calls write data directly to an I/O port from a specified buffer. Each function writes a different number of bytes of data.

RtWritePortUshort

Calls write data directly to an I/O port from a specified buffer. Each function writes a different number of bytes of data.

RtWtoi

Converts a given string value to an integer.

 

NOTE: 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.

NOTE: Implicit TLS initializers/finalizers must not take too long to execute. While they are executing, any real-time APIs that create or destroy internal RTX64 Subsystem objects (e.g., threads, processes, mutexes, semaphores, open files, etc.) will block.