Release Notes for RTX64 4.1
RTX64 Runtime
General
- Improved the performance of RTSS-to-Windows communication on Windows 10 Feature Update Version 2004 from the initial implementation in the RTX64 4.0.1 patch release. (9578)
Subsystem
- Implemented RTSS Timer Tick Compensation to account for SMI and other non-maskable system behaviors that impact latency and cause jitter. (8967)
Tools and Utilities
- Added RTX64 Console, an output display console window that can be configured to display for each real-time application or as a single instance for all real-time applications, similar to previous releases.
- Added functionality to the Control Panel to support configuration of RTX64 Console (one or per process) and logging of real-time application output.
- Added functionality to the Control Panel to support configuration of remote debugging connections.
- Improved RTX64 Analyzer to display a more complete installation history. (7898)
- Added functionality to RtssRun and Task Manager that allows you to specify the time-of-allocation for the process external MSpace. (9640)
- Added the ability to reset default values for the memory profile settings Available system memory and Percentage expected to be used by Windows. (8844)
RTX64 SDK
Application Debugging
- Added support for attaching the Visual Studio debugger to an RTSS process running on a remote system, outside of the Visual Studio IDE. See Attaching to a Remote Running RTSS Process for more information.
Real-Time APIs
- Added new Real-time APIs for setting and retrieving a thread’s time quantum value:
- RtSetTimeQuantum sets the time quantum for a specified thread.
- RtGetTimeQuantum retrieves the time quantum, in milliseconds, for a specified thread.
- Added new Real-time APIs that retrieve shared memory information:
- RtQuerySharedMemory retrieves shared memory information
- Structure SHARED_MEMORY_INFO contains shared memory information retrieved by RtQuerySharedMemory.
- Added attribute value RT_PROC_THREAD_ATTRIBUTE_ALLOC_EXTERNAL_MSPACE_AT_PROCESS_START to Real-time function RtUpdateProcThreadAttribute. This value specifies the time-of-allocation for the process external MSpace. (9635)
- Added logic to Real-time function RtTerminateProcess so that it now fails and sets last error to ERROR_INVALID_HANDLE when an invalid handle is specified for parameter hProcess. (8000)
Native Framework APIs
- Added new Real-time Native Framework functions and structures for configuring real-time application output consoles (9239)
- RtfwSetConsoleConfigurationEx configures real-time application output consoles.
- RtfwGetConsoleConfigurationEx retrieves the configuration of real-time application output consoles.
- Structure RTFW_CONSOLE_CONFIGURATION_EX represents the configuration of real-time application output consoles.
- Added new Real-time Native Framework functions and structures for configuring remote debugging:
- RtfwGetRemoteDebuggerConfiguration retrieves the RTX64 remote debugger configuration.
- RtfwSetRemoteDebuggerConfiguration sets the RTX64 remote debugger configuration.
- Structure RTFW_REMOTE_DEBUGGER_CONFIGURATION represents the configuration of the RTX64 remote debugger.
- Added new member AllocateExtMSpaceAtStartup to Native Framework structure RTFW_SCHEDULED_PROCESS that specifies whether the process will allocate the process external MSpace at process start. (9224)
Managed Framework APIs
- Added new properties and methods to Managed Framework class ServerConsole (9239):
- AutoClose gets/sets whether real-time application output consoles close automatically.
- LogFolder gets/sets the pathname of the folder where real-time application output console log files are written.
- LogFolderMaxDiskSize gets/sets the maximum size of the real-time application output console log folder, in megabytes.
- TCPPort gets/sets the TCP port number on which RTX64 Server listens for real-time application output console connections.
- UsePerProcessConsoles gets/sets whether or not each real-time process displays output in its own real-time application output console.
- ResetAutoClose resets property AutoClose to its default value.
- ResetLogFolder resets property LogFolder to its default value.
- ResetLogFolderMaxDiskSize resets property LogFolderMaxDiskSize to its default value.
- ResetTCPPort resets property TCPPort to its default value.
- ResetUsePerProcessConsoles resets property UsePerProcessConsoles to its default value.
- Added new properties and methods to Managed Framework class IntervalZero.RTX64.Config.RemoteDebugger for configuring remote debugging:
- RemoteDebuggerEnable determines whether remote debug attach connections to the computer are allowed.
- RemoteDebuggerName gets/sets the IPv4 address of the host system.
- RemoteDebuggerPort gets/sets the Port ID of the target system.
- RemoteDebuggerUriInUse retrieves the Uniform Resource Identifier (URI) in use by the target system.
- Reset resets all remote debugger properties to their default values.
- ResetEnable resets the RemoteDebuggerEnable property to its default value.
- ResetName resets the RemoteDebuggerName property to the default IPv4 address of the host system.
- ResetPort resets the RemoteDebuggerPort property to the default Port number.
- Added new property AllocateProcessExtMSpaceAtStartup to Managed Framework class IntervalZero.RTX64.Config.ScheduledProcess that specifies whether the process will allocate the process external MSpace at process start. (9224)
- Added new overload Start(Dictionary) to the Managed Framework RTProcess.Start Method API which starts an RTSS process via a dictionary that uses the StartParameters enumeration as the dictionary’s key type. (9224)
RTX64 Runtime
Help
- Resolved issues where some Help links in Tracealyzer targeted the wrong RTX64 Help system. (9574)
General
- Resolved an issue where RTX64 would sometimes change the system power scheme during Windows shutdown, resulting in a system hang. (9403)
- Resolved an issue where FPU/SSE/PT states on the Intel® Celeron G3900E processor were not properly saved and restored on a thread context switch. (9680)
Licensing
- Improved the warning message that appears after a change is made to the RTSS boot configuration via command line. (9203)
Subsystem
- Resolved an issue where the Subsystem could not be stopped following a call to the Managed Framework Intervalzero.RTX64.RTAPI Namespace. (9306)
Network and Drivers
- Resolved an issue where the X550T Network Interface Card would output error EEPROM Checksum Is Not Valid to the RTX64 Server console window. (9438)
- Resolved iPerf TCP transmit performance issues with the RtNalI10GB driver. (9619)
Tools and Utilities
- Resolved an issue where RTX64 System Tray would not display a toast notification when the RTX64 boot configuration was not available. (7851)
- Resolved an issue where RtssRun did not display an error code when RtCreateProcess failed to launch a real-time application. (9583)
- Fixed alignment issues in the RTX64 Activation and Configuration utility. (9750)
- Resolved these issues with RTX64 Task Manager:
- Resolved an issue where RTX64 Task Manager sometimes displayed an unusually large value for CPU usage. (8625)
- Resolved an issue where RTX64 Task Manager didn’t accurately report CPU usage for system configurations where only one processor was assigned to Windows. (9921)
- Resolved an issue where scheduled tasks added via the Add as scheduled task option in Task Manager did not include process arguments. (9266)
RTX64 SDK
General
- Resolved an issue where uninstalling the RTX64 SDK broke associations for Monitoring files (.monx and .mev), even when the Runtime was still installed. (9231)
Application Development and Debugging
- Resolved an issue where the RTX64 application template hard-coded character-set types in pre-processor definitions. This required a user to manually change the hard-coded value in order to change the character set once the project was created. (8470)
- Resolved build errors with STL code in Visual Studio 2019 version 16.6.x. (9386)
Windows-Supported APIs
- Resolved an issue where function RegQueryValueEx returned garbage data when called within a Multi-Byte project. (9127)
Real-Time APIs
- Resolved an issue where a Blue Screen resulted when parameter IpApplicationName in Real-time function RtCreateProcess was set to a pathname that contained spaces surrounding double-quotation marks. (8116)
- Resolved an issue where RtCloseHandle incorrectly succeeded in Windows build configurations when it was passed an invalid handle. (7993)
- Resolved an issue where RtPrintf failed with a null formatString when Windows threw an exception. (8087)
- Resolved an issue where RtIsAppRunnable returned an unexpected error when given invalid parameters in a Windows build configuration. (8042)
- Resolved issues with RtGetProcessIdealProcessor where it would pass unexpectedly in RTSS build configurations and return the wrong error code in Windows build configurations. (7997)
- Resolved an issue where RtCreateSharedMemory crashed when the asking size was larger than the existing shared memory region size. (9125)
- Resolved an issue where Real-time function RtFreeLockedMemory returned true when its parameter was NULL. (9160)
Native Framework APIs
- Resolved an issue where RtfwStartTCPIPStack did not always clear the shared memory it created. (9394)
Managed Framework APIs
- Resolved an issue where Managed Framework API RtProcess.WaitForExit(Int32) returned False if the real-time process exited before calling WaitForExit. (8114)
Samples
- Resolved an issue where the mSRTM sample incorrectly interpreted processor indexing set by its
/p
parameter. (9270) - Removed unnecessary build configurations for ARM and ARM64 from the RTKIPC sample project. (8282)
- Resolved an issue where the source code for samples ManagedCodeFrameworkClientCPlusPlus and ManagedCodeFrameworkClientCSharp referenced an API that was not called by the code. (9559)
- Resolved an issue where the FastSemaphore sample did not work on Virtual Machines. (8206)
RTX64 Runtime
Compatibility
- Unlike with previous versions, RTX64 4.0 is not always compatible with RTSS processes built with a prior version of RTX64 (RTX64 4.1 and 4.0 are compatible). See API Changes Between RTX64 3.x and RTX64 4.x for a list of deprecated and modified API calls. You can use the new RtssRun flag /c to check if an existing RTSS binary will run on RTX64 4.0.
Licensing
- Licenses for RTX64 3.x and previous versions will not work with RTX64 4.1.
- RTX64 4.0 and above only support small form factor dongles. The standard dongles supported by previous versions are no longer supported. If RTX64 4.1 is installed on a system, standard dongles will no longer work for previous versions installed on the same system.
General
- Upgrading to a new Windows 10 feature update on a machine where the RTX64 Runtime is already installed results in deletion of the RTSS boot configuration. To work around this issue, set the RTSS boot configuration through the RTX64 Activation and Configuration utility. See the topic Setting the RTSS Boot Configuration for more information.
- The RTX64 installers no longer install Software Identification (SWID) tags.
- When Intel® TurboBoost is enabled in the BIOS, Windows core frequency is boosted when the RTX64 Subsystem starts. This is because RTSS cores are in an idle loop for pooling those SRIs from Windows to RTSS cores. On Coffee Lake systems, specifically, whenever there is a core in the idle loop, the remaining cores' frequency is boosted. To avoid this, we recommend you disable Intel® TurboBoost in the BIOS.
Network and Drivers
- When creating a custom NIC driver, we recommend that the driver binary name not match the default NIC driver names provided by RTX64. The default driver names are used by the Control Panel to set up interfaces with the optimal defaults based on the provided drivers logic. (8318)
- All NIC driver source now generates RTDLLs with the suffix _custom (e.g. RtNalIPCH_custom.rtdll). (8319)
- Custom NIC drivers should not use the C Runtime library, and must not call printf. (6438)
- A Windows 10 feature update may cause devices previously converted to RTX64 control to convert back to Windows control. Following a Windows feature update, verify that all converted devices remain under RTX64 control, and re-convert any that were reset to Windows control using the steps documented in the topic Converting a Windows Device to an RTX64 Device.
- The maximum value for the TCP/IP Stack's maximum concurrency setting is now 10340. (9151)
Application Development
- Visual Studio 2015 has been deprecated and will be removed from the next major release.
- Visual Studio versions 2012 and 2013 are no longer supported. (7776, 7777)
- These supported Windows SDK versions have been tested with RTX64 4.1:
Visual Studio version | Tested Windows SDK versions |
---|---|
2019 |
10.0.18362.x 10.0.17763.x |
2017 |
10.0.14393.x 10.0.17763.x |
2015 |
10.0.10240.x 8.1 |
RTX64 SDK
See API Changes Between RTX64 3.x and RTX64 4.x for a list of the APIs that were enhanced, underwent breaking changes, or were deprecated in or removed from RTX64 4.1.
- Real-time Native Framework function RtfwSetSubsystemConfiguration must be run with Administrator privileges. The function will fail otherwise. (8456)
RTX64 Runtime
General
- The RTX64 power plan and RTX64 user groups are not removed when the RTX64 Runtime is uninstalled. (9918)
- When multiple RTX64 SDK versions are installed on the same machine, only one shortcut to the Activation and Configuration utility will appear in the Start menu. This shortcut might not always be listed under the most recent SDK version. (8359)
- If you install the RTX64 3.7 Runtime on a machine on which the RTX64 4.x SDK is already installed and then activate both products, the Activation and Configuration utility does not allow you to set the RTSS boot configuration. (8647)
- The Activation and Configuration and command line utilities fail silently (do not display an error) when an attempt is made to activate an RTX64 component on a Virtual Machine when a dongle is not present. (9225)
- Licenses cannot be activated to a small form factor dongle, either from the Activation and Configuration utility or command line, on a remote system accessed via Windows Remote Desktop. This is due to a security limitation with the third party dongle software. Attempts to activate to the dongle in this scenario will result in an error such as Error 19 (Unable to read dongle memory). Note that this issue does not happen when other remote connections, such as VNC or Team Viewer, are used.
Subsystem
- When the RTX64 Watchdog timer is configured to monitor for runaway threads, debugging an RTSS process may cause the Subsystem to become unresponsive. (9937)
- When real-time process output is configured to display in a separate console window for each real-time process (default), output for the Network Abstraction Layer (NAL) and RT-TCP/IP Stack appears in separate consoles, when such output should appear in a single console that closes when the Subsystem stops. This will be fixed in a future release. (9884)
Network and Drivers
- Real-time API RtnGetArpTable() and the RtssArp.rtss utility display device names truncated to 15 characters. The full case-sensitive device name must be used when adding or deleting an ARP entry. (9222)
Tools and Utilities
- The keyboard shortcuts used to scroll the RTX64 Console window do not work in the current version of RTX64. This issue will be fixed in a later release. (9436)
- Tools in RTX64 4.0 and above exhibit various issues on systems running Windows 10 2016 LTSB (Long Term Servicing Branch). Due to these issues, we have performed limited testing and will not be claiming support for such systems. If you require Windows 10 2016 LTSB support, please contact your Sales representative. (9206)
RTX64 SDK
Tools and Utilities
- Some memory-related monitoring events are no longer generated, causing degraded memory graphs in Tracealyzer. (9900)
Application Development
- Attempts to build a project migrated from a pre-2015 version of Visual Studio to Visual Studio 2015 or later results in a linker error: error LNK2005: _CrtSetReportHook already defined in rtx_rtss.lib(RTX_RTSS.SYS). To work around this issue, check the Linker > Input options and make sure rtx_rtss.lib is not linked to any of the C Runtime libraries (libcmtd.lib, libvcruntimed.lib, libucrtd.lib). (8697)
Application Debugging
- The IntervalZero Real-Time Debugger does not work in Visual Studio 2017 if the latest Visual Studio C++ Redistributables are not installed. To work around this issue, install these redistributables:
- Microsoft Visual C++ 2015-2019 Redistributable (x64)-14.48.29910
- Microsoft Visual C++ 2015-2019 Redistributable (x86)-14.48.29910
These redistributables are packaged with the RTX64_4.1_SDK_Setup.zip file.
Alternatively, you can download them from Microsoft at https://visualstudio.microsoft.com/downloads/
See the TechNote Unable to Debug RTSS Applications using the IntervalZero Real-Time Debugger with Visual Studio 2017 on the Support Site for more information.
- Launching RTSS applications remotely without debugging through the IntervalZero Remote Real-Time Debugger does not work in Visual Studio 2015.
Samples
- The RDTPerformance sample may hang when debugged on machines with a high number of cores. (8907)