Release Notes for RTX64 3.5
Key Features
General
- Added support for Secure Boot on Windows 10. (7031)
- Added support for C++ magic static local variables and implicit Thread-Local Storage (TLS), which supports initialization and finalization of variables declared with storage class thread_local and __declspec(thread). (5885, 6089, 7033)
Subsystem
- Added support for performance optimization with Intel® Resource Director Technology (RDT) resource allocation capabilities, including Cache Allocation Technology (CAT) and Memory Bandwidth Allocation (MBA) configurations. See SDK below for a list of Real-time functions and configuration functions that have been added to support this functionality. (6460, 6043)
- Improved Watchdog Timer support. Modified internal calculation so dedicated RTSS cores correctly reset on a context switch, not the processor idle thread. See SDK below for information on the newly provided API to manually reset a watchdog timer for given cores along with configuring the feature within the Subsystem. (4430)
- Added support for overriding Windows Energy/Performance Bias, along with a range for configuring performance vs. energy savings in RTX64. (6449)
- Added support for GS segment registers, which enable use of:
- Windows SDKs newer than version 8.1
- C++ magic static local variables and implicit Thread-Local Storage (TLS), which supports initialization and finalization of variables declared with storage class thread_local and __declspec(thread).
(5885, 6089, 7033, 6111)
RT-TCP/IP Stack and Drivers
- Added support for the Matrox Concord GE (customized Intel® 82574) Ethernet Controller (0x10D3) to the Intel® RtE1000 driver. See the RTX64 Supported NICs document for more information: https://www.intervalzero.com/technical-support/guides-and-minitutorials/ (6983)
Tools and Utilities
- Added the following enhancements to the Task Manager:
- Task Manager now provides CPU utilization information at a per-process, -thread, and -processor level. (6340)
- Task Manager now displays a status (Running, Under Debug, Suspended, Frozen) for each listed process. (2816)
- Task Manager now displays the Ideal Processor for listed RTSS processes. (6263)
- You can now type the name of an .rtss file or .exe file in the Start New Task dialog to start a process, in addition to browsing to the file. (2817)
- The current sort order is now saved when the tool is closed and retained when it is next opened. (6729)
- Added the following enhancements to the RTX64 Analyzer:
- Analyzer output now includes information on the Windows updates installed on the system (7034).
- Analyzer output now includes information on the status of performance optimization with Intel® Resource Director Technology. (6763)
Application Development
- Added support for secure C Runtime functions assert and abort under Debug mode that cause assertions when invalid parameters are passed. Visual Studio templates have been modified to include a new debug StartupCRTd library under the linker options in RTSSDebug configurations to handle the assertions. Assertion checks that fail through secure functions will throw an exception and display a message through the RTX64 Server console. (2688, 7019, 7020)
SDK
Real-Time
- Added new Real-Time functions for configuring performance optimization with Intel® Resource Director Technology (RDT) resource allocation:
- RtGetRDTCapability – returns the system Resource Director Technology (RDT) allocation capability.
- RtGetThreadCLOS – retrieves the Class of Services (CLOS) value of a specified thread.
- RtSetThreadCLOS – overwrites a thread’s implicit or default Class of Services (CLOS), which is based on its priority.
- Added a new Real-Time function, RtGetProcessIdealProcessor, which retrieves the ideal processor for a given RTSS process handle. (2079)
- Added a new Real-Time function, RtResetWatchdog, which resets the watchdog timer counter on given RTSS cores. (4424)
- Added a new Real-Time function, RtGetProcessTimes, which retrieves timing information for the specified RTSS process. (2815)
- Added a new Real-Time function, RtGetSystemTimes, which retrieves an array of system timing information. (2815)
Managed Code Framework
- Added a new Managed Framework property, WindowsEnergyPerformanceBias, which configures the Windows Processor Energy/Performance Bias functionality. (7066, 7069)
- Added new Managed Framework properties to support configuring performance optimization with Intel® Resource Director Technology (RDT) resource allocation:
- CATMode – retrieves the current Intel® Cache Allocation Technology (CAT) mode for performance differentiation among RTSS threads.
- MBAMode – retrieves the current Intel® Memory Bandwidth Technology (MBA) mode for performance differentiation among RTSS threads.
- RDT – retrieves the current state of Intel® Resource Director Technology (RDT) performance optimization.
- Added two new Managed Framework enumerations that represent the status of performance optimization with Intel® Resource Director Technology (RDT) resource allocation:
- RDTState – this enumeration represents the state of Intel® Resource Director Technology (RDT) performance optimization.
- RDTFeatureMode – this enumeration represents the mode of the Intel® Resource Director Technology (RDT) features.
Native Framework
- Added two new Native Framework functions that set/get the configuration for the Windows Energy/Performance Bias feature. (7066, 7069)
- RtfwGetWindowsEnergyPerformanceBias – reads the current configuration for the WindowsEnergyPerformanceBias feature.
- RtfwSetWindowsEnergyPerformanceBias – sets the configuration for the WindowsEnergyPerformanceBias feature.
- Added two new Native Framework enumerations that represent the status of performance optimization with Intel® Resource Director Technology (RDT):
- RTFW_RDT_STATE – this enumeration represents the state of Intel® Resource Director Technology (RDT) performance optimization.
- RTFW_RDT_FEATURE_MODE – this enumeration represents the mode of the Intel® Resource Director Technology (RDT) features.
- Expanded the Native Framework RTFW_SUBSYSTEM_CONFIGURATION structure to include RDT resource features. Calls to RtfwGetSubsystemConfiguration and RtfwSetSubsystemConfiguration can now be used for feature configuration.
- Added new RTX64 Native Framework Library functions for managing scheduled tasks (6680):
- RtfwCreateScheduledProcess – creates a new scheduled process to start with the Real-time Subsystem.
- RtfwDeleteAllScheduledProcesses – deletes all scheduled processes.
- RtfwDeleteScheduledProcessByID – deletes the scheduled process specified by an identifier.
- RtfwGetCurrentScheduledProcessCount – retrieves the total number of scheduled processes.
- RtfwGetPIDByScheduledID – retrieves the last known PID of the scheduled process that is currently running.
- RtfwGetScheduledProcess – retrieves information about a previously scheduled process.
- RtfwModifyScheduledProcess – modifies an existing scheduled process.
- RTFW_SCHEDULED_PROCESS – a structure that holds the data fields for a single scheduled process.
Samples
- Added an RDTPerformance Sample, which provides an example of how to use RTX64-supported Intel® Resource Director Technology (RDT) to optimize the performance of particular RTSS threads with high performance requirements. (6828)
- Added a sample that demonstrates how to use FastSemaphores. (4243)
Issues Resolved
Installation
- Resolved an issue where a Blue Screen occurred with message SYSTEM THREAD EXCEPTION NOT HANDLED - Rtx Halext.sys when installing RTX64 3.4 on some Intel i5 systems. (7214)
- Resolved an issue where RTX64 services did not automatically restart in RTX64 merge modules. (6968)
- Resolved an issue where devices converted to RTX64 control would enter an ambiguous state after RTX64 was uninstalled. (6482)
Activation and Configuration
- Resolved an issue where the RTX64 boot configuration would become disabled if there existed multiple licenses tied to one or more dongles. (7107)
- Resolved an issue where the Activation and Configuration utility did not work correctly with previous versions of RTX64. (6893)
Subsystem
- Resolved an issue where the RTX64 Subsystem failed to allocate the requested amount of local memory. (7256)
- Resolved an issue where a Blue Screen would occur when the NDIS driver was upgraded to version 10.0.16299.x and the Subsystem was configured to start automatically with the RT-TCP/IP Stack enabled. (7028)
- Resolved an issue where the Subsystem could not handle a failed debug assertion, which resulted in a Green Screen. One specific instance of this was when the CRT library failed debug assertions when an application linked against the debug CRT library caused one of the secure CRT functions to have a parameter validation error. (2688)
- Resolved an issue where RtMapMemory caused a Blue Screen when used in a Windows process before RTAPI’s DLLMain was called. (7134)
- Resolved an issue where RtReleaseFastSemaphores did not release the correct number of count threads. (6355)
- Resolved an issue where an RTSS application loading an RTDLL that used the RT-TCP/IP stack would not exit correctly. (7181)
RT-TCP/IP Stack and Drivers
- Resolved an issue where communication with the RTX64 Virtual Network failed sporadically after reboot. (7309)
Tools and Utilities
- Improved how tools handle and display exceptions. (5788)
Control Panel
- Improved how the Control Panel and other tools handle cleanup of processes stopped by a Watchdog timeout. (5240, 5632)
- Resolved an issue where the Configure search path page in the RTX64 Control Panel was missing a Reset to factory defaults option. (6590)
- Resolved an issue where the Control Panel status bar would sometimes hide page content. (5746, 5320)
- Resolved an issue where the Control Panel allowed an IP Fragmentation Time-out value outside of the supported range (between 1 and 127). (5742)
- Resolved an issue where the Subsystem would sometimes become unstable when the local memory allocation setting was set to a high value. (6856)
Task Manager
- Resolved an issue where a process sometimes did not truly terminate after it was ended with Task Manager, even though the task disappeared from the Running Tasks list. (7433)
- Resolved an issue where the Task Manager would not properly interpret process information of elevated Windows applications when the Task Manager was not run as Administrator. (6836)
- Improved the Add a Scheduled Task dialog in Task Manager to reject a file path that contains double slashes (\\). (6795)
- Resolved an issue where there was no limit to the number of entries in the Recently Launched list in Task Manager. There is now a limit of 10 entries. (6366)
Latency View
- Resolved an issue in Latency View where the user could initiate Latency View without first choosing core assignments. You must now select core assignments before Latency View can be run. (5511)
Application Development
- Resolved an issue where RTX64 projects failed to build in Visual Studio 2017 version 15.8. (7341)
- Resolved Compiler warning C4081 when building a RTSS or RTDLL sample with the macro UNDER_RTSS_UNSUPPORTED_CRT_APIS enabled. (6674)
SDK
Real-Time
- Resolved an issue where the Subsystem could not clean up completely on Windows shutdown when a Windows driver linked to the Real-Time Kernel API (RTKAPI) was loaded. (7045)
- Resolved an issue where C Runtime function fopen did not recognize ISO 8859-1 character sets in ASCII mode. (6168)
- Resolved an issue where Real-Time API RtCreateProcess failed to launch when RTX64 was licensed to a hard drive. (6543)
Managed Code Framework
- Resolved an issue where Managed Code Framework property Config.Subsystem.RestartNeeded would fail to report that a restart of the computer was required. (5865)
- Ensured that the Managed Code Framework throws an appropriate exception when an unsupported Time Quantum value is specified. (4957)
- Resolved an issue where repeated calls to Managed Code API RTProcess.EnumerateProcesses resulted in a memory leak. (7180, 7153)
- Resolved an issue where Managed Code SearchPath property set an incorrect path. (6944)
- Ensured that Managed Code class LicenseInfo returns the proper exception type when its Edition property was accessed by a non-Runtime license. (6653)
- Resolved an issue where Managed Code function Control.Subsystem.StopTcpipStack returned the wrong value when used in a scenario where the Stack was already stopped. (7227)
Native Framework
- Resolved an issue where the ANSI version of Real-time function RtGetLicenses did not return information on the licenses available on the system. (7117)
- Resolved an issue where the ANSI versions of Native Framework functions RtfwCreateNetworkInterface and RtfwModifyNetworkInterface returned the wrong error code when the Size member of the corresponding structure is too small. (7207)
Notes
General
- Members of RTX64Users cannot stop the RT-TCP/IP Stack. (1386)
Installation
- IntervalZero cross-signs INF files with a SHA-2 certificate, which requires Windows patch KB3033929 on Windows 7 systems. If this patch is not already installed, the RTX64 Runtime will install the patch automatically. Installation of this patch requires a reboot before the RTX64 installation can complete. (6905)
- The Repair feature of the RTX64 SDK installer has been removed. (7412)
Tools and Utilities
- The RTX64 CPU Usage command line utility – RTX64CPUUsage.rtss – has been removed and replaced by functionality in the Performance tab in RTX64 Task Manager. The command line tool will be available as a zip file from the IZ Support site. (7218)
Application Development
- RTX64 fully supports the standard C++ library header <algorithm>.
- Code executed by shutdown handler callback functions cannot use implicit thread-local storage.
- 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.
Application Debugging
- The RTX64 Real-Time Debugger does not support function DebugBreak. Use of the assert function will generate an error message through the message console and the application will crash with an access violation. This allows the debugger to give back a call stack. Otherwise, you must align the notification message with the server console message. (5421)
SDK
- Managed Code support for the following APIs has been deprecated:
- RtGetTimer (5204, 1306)
- AttachShutdownHandlers (6892)
- Enum IntervalZero.RTX64.RTAPI.Threading.Clock4 (6788)
- Method IntervalZero.RTX64.RTAPI.RTSSEnvironment.EnableInterrupts (7239)
- Method IntervalZero.RTX64.RTAPI.RTSSEnvironment.DisableInterrupts (7239)
- Enum IntervalZero.RTX64.RTAPI.IO.InterruptMode (7239)
- Enum IntervalZero.RTX64.RTAPI.IO.InterruptDisposition (7239)
- Class IntervalZero.RTX64.RTAPI.IO.RTInterruptHandler (6891)
- The Managed Code Framework no longer has a separate application domain, which means it can now be used with MSTest. (6679)
- The data type for field ProcessorAffinityMask in structure RTPROCESS_INFORMATION changed from DWORD_PTR to UNSIGNED_INT64. (7302)
Known Issues
Activation and Configuration
- Changing the processor configuration via the Activation and Configuration utility could have adverse effects on Subsystem features that have ideal processor and affinity mask assignments, such as Scheduled Tasks. (6583)
Subsystem
- Starvation timeout does not occur if there are processes on the same core running timers/interrupts with a higher priority than that of the potential runaway thread. The RT-TCP/IP Stack is an example of such a process. If the Stack is running, and a tight loop of a normal priority is running on the same core, starvation timeout will not occur, as the context switch is still occurring to one of the Stack timers. To avoid this problem, run the tight loop on a different core than the one on which the process with the timer/interrupt is run. (7410)
Tools and Utilities
- When the RTX64 Runtime is installed but not configured, an error appears when the Control Panel is launched: rtmbRecieve failed with Win32 error 0. (7296)
- An unhandled exception occurs when a Windows user who does not have Administrator privileges attempts to restart the Subsystem through the RTX64 Control Panel. (7465)
SDK
- The Visual Studio compiler generates a C4564 warning when the compiler warning level is set to 4 and when using C++/CLI managed code where values are not explicitly specified for default parameters. (4967)