Release Notes for RTX64 4.0
- Key Features
- Improvements
- Issues Resolved
- Notes
- Known Issues
- API Changes Between RTX64 3.x and RTX64 4.x
Memory
RTX64 4.0 implements a completely new local memory allocation architecture. The local memory configuration now contains multiple allocation spaces. See Allocation Spaces in Local Memory for more information. (4509)
Key memory changes and improvements:
- Improved performance of memory allocation and de-allocation compared to previous RTX64 versions and Windows.
- Improved fragmentation to optimize memory usage within a process.
- Locks down page frames to reduce cache misses and guarantee cache coherence and TLB. Windows tradable memory will not impact the Subsystem or real-time processes.
- Provides more flexible configuration and control over how memory is used within the Subsystem and by user real-time processes.
- Allows for reserving memory on process startup to guarantee the memory you need will be available.
- Redesigned the Control panel to provide an overview of memory usage along with the ability to configure Subsystem, Network, and process MSpace settings.
- Added the ability to tools and the debugger to override default settings for initial reserved memory size and expanding of a process MSpace.
- Expanded the Real-Time API (RTAPI) to include calls to query and configure process MSpaces.
- Expanded the Managed and Native framework APIs to support easy configuration of local memory.
- Added a new RTX64 MSpaces command line utility, which displays local memory allocation spaces (MSpaces) of all RTSS processes (optionally including internal system processes and proxy processes).
- Added WinDbg extension commands for displaying local memory allocation space information.
- Added a new sample, Dynamic MSpace Configuration, which provides sample code, building as RTSS processes and Windows processes, respectively, that you can use to avoid memory request errors when memory allocation spaces (MSpaces) are configured to not expand automatically when exhausted (Auto expand MSpace is turned off in the Control Panel).
Network and Drivers
- Integrated the Network Abstraction Layer (NAL). The NAL is a network layer that abstracts the network hardware and driver functions from the upper-level protocol stacks and provides management interfaces for those upper layers to easily query for and use available network assets.
- Layered the RT-TCP/IP stack on top of the NAL to take advantage of the NAL’s ability to better handle NIC resources.
- Re-architected the Virtual Network to provide a more robust connection and better performance.
- Improved error handling on startup of the real-time networking components. (8297)
- Expanded the Real-time Network (RTN) API, NIC Driver Real-time Network Device (RTND) API, and added new Real-time Network Abstraction Layer (RtNal) functions and structures.
- Added a new Set the maximum concurrency Control Panel setting that determines the number of threads that are allowed to run concurrently within the TCP/IP Stack. The Historical Maximum value represents the historical maximum Stack semaphore usage. (7874)
Tools and Utilities
- Reworked the Control Panel to support integration of Network Abstraction Layer (NAL) functionality, layering of the RT-TCP/IP Stack on top of the NAL, and expanded memory allocation functionality.
RTX64 Runtime
Licensing
- Improved license expiration notifications for evaluation versions. (7670)
Network and Drivers
- RTSS applications can now call both a Network Abstraction Layer (NAL) API and an RT-TCP/IP Stack API at the same time. (7877)
- Increased the maximum number of sockets from 255 to 1024. (7879)
- Increased the device name length in the RT-TCP/IP Stack and drivers to 64 bytes. (8416)
- Added support for the Intel i219 LM4 Ethernet Connection NIC to the RtNalIPCH driver. See the RTX64 Supported NICs document for details. (7083)
- Improved error handling on startup of the Real-time network components. (7751)
- Added support for interrupt moderation to the RtNalIGB, RtNalIPCH, RtNalI10GB drivers. See the TechNote Using Interrupt Moderation with Supported RTX64 Drivers for instructions on using this feature. (5343)
- Improved the RtNalIPCH driver to receive time-stamped frames. (6214)
Tools and Utilities
- Added a Set maximum concurrency setting to the Control Panel and framework that allows you to specify the number of threads that are allowed to run concurrently within the TCP/IP Stack. Historical information is made available to inform you of resource usage to help you optimize your system. (7952)
- Added settings to RtssRun and Task Manager that allow you to set an initial size (/i) and expand (/e) the process external MSpace for new and scheduled tasks. (8153)
- Added a /c setting to RtssRun that checks compatibility of an RTSS and RTDLL binary with the target Runtime and lists any compatibility issues.
- RTX64 Analyzer output now contains information on RTX64 Visual Studio extension installers (VSIX). (8147)
RTX64 SDK
Application Development
- Added a new setting to the RTX64 Application and RTDLL project templates in Visual Studio to optionally include support for the Network Abstraction Layer (NAL) component. (7941)
- Added a new setting to the RTX64 Application and RTDLL project templates in Visual Studio to optionally include RtVision support. Note that this requires the RtVision SDK to be installed. (8526)
Application Debugging
- Added new WinDbg extension commands for displaying local memory allocation space information:
!rtims / !rtems | Displays summary and statistical information for the internal memory allocation space (MSpace) of a process. |
!rtimspool / !rtemspool | Displays local pool information for the process internal/external memory allocation space (MSpace) of a process. |
!rtimspoolfg / !rtemspoolfg | Displays fragmentation information within the local pool of an internal/external memory allocation space (MSpace) of a process. |
!rtimspoolcache /!rtemspoolcache | Displays chunk information within the pool cache of an internal memory allocation space (MSpace) of a process. |
- Added support for WinDbg object string Mvector Interrupt, which specifies multiple interrupt vector attaching information. (5828)
- Added a new WinDbg extension command, !rtrdtinfo, which displays the system’s RDT capability and CLOS configuration (if not ignored by RTX64).
- Improved the Real-Time Debugger to accept initial and expand size values for the local pool of a process's external allocation space (MSpace). (8158)
Real-Time APIs
- Added new Real-time APIs for querying and starting Subsystem components (8281):
- RtQueryComponent returns status information for installed Subsystem components.
- RtStartComponent starts a specified Subsystem component.
- RTSSCOMPONENT specifies the type of networking component.
- RT_COMPONENT_STATUS specifies the status of a Subsystem component.
- Added new macros for mapping specific functions (8033):
- _tRtTtoi maps to functions RtAtoi and RtWtoi
- _tRtPrintf maps to functions RtPrinf and RtWPrintf
- Added new RtNal structure RTNAL_INTERFACE, which specifies interface data for function RtndInitializeInterface.
- Added new Real-time function RtIsDefaultLocalMemory, which returns the default memory allocation configuration (local or Windows) for the Subsystem and RTSS applications.
- Added attribute values to Real-time function RtUpdateProcThreadAttribute.
- Added new Real-time APIs and changed existing APIs to support the new local memory architecture in RTX64:
- Added RtGetProcessMSpace, which retrieves descriptors for the external and internal memory allocation spaces (MSpaces) for the specified RTSS process or Subsystem.
- Added RtQueryProcessMSpace, which queries memory allocation space information in the specified process MSpace, including various summary statistics of its local pool and pool cache.
- Added enumeration PERFORMANCE_LEVEL, which indicates the performance level of calling function RtQueryProcessMSpace.
- Added RtExpandMSpace, which expands the specified MSpace by the size specified.
- Added RtShrinkMSpace, which shrinks the specified MSpace by the size specified.
- Added structure MSPACE_INFO, which contains information for a memory allocation space (MSpace).
- Changed RtAllocateLocalMemory to allocate memory from the external MSpace of the current process.
- Changed RtAllocateLocalMemoryEx to allocate memory from the external MSpace of current process.
- Updated event MF_EVENT_KIND_PROCESS_CREATE in structure MF_EVENT_KIND to include information on Local Memory MSpaces. (8154)
- Added support for members ReceiveLinkSpeed and TransmitLinkSpeed in the IP_ADAPTER_ADDRESSES structure:
- ReceiveLinkSpeed is the current speed in bits per second of the receive link for the adapter.
- TransmitLinkSpeed is the current speed in bits per second of the transmit link for the adapter.
- Added new Real-time Network (RTN) functions:
- RtnFrameAllocate is used by the filter driver, and a RTSS application with RT-TCP/IP support enabled, to allocate a block of memory to store an Ethernet frame.
- RtnFrameFree frees memory allocated by RtnFrameAllocate.
- RtnFrameTransmit is used by a filter driver or an application to transmit an Ethernet frame for the device whose source MAC address is in the frame.
- RtnFrameTransmitInterface is used by a filter driver or an application to transmit an Ethernet frame for the device pointed by ndp. (3969)
- RtnQueryStackHeapUsage retrieves heap usage information for the TCP/IP Stack. (5482)
- RtnNotifyRecvQueue is used to notify the receiving application that data has been received.
- RtnTransmitCompleteCallback must be called for a NAL frame transmitted by RtndTransmitEx.
- Added new NIC Driver Real-time Network Device (RTND) functions and structures:
- RtndAttachToReceiveQueue attaches a NAL client application to the driver receive queue to start receiving packets.
- RtndAttachToTransmitQueue (optional) attaches a NAL client application to the driver transmit queue to allow application transmit complete callbacks.
- RtndDetachReceiveQueue detaches the driver receive queue from a NAL client application.
- RtndDetachTransmitQueue (optional) detaches driver transmit queue from a NAL client application.
- RtndReceiveWithCallback (optional) receives a single received packet from the driver. Packet data is available in an application callback.
- RtndServiceTransmitQueue (optional) is called by the NAL to service transmitted packets in the context of a NAL client application.
- RtndTransmitEx (optional) is a zero-copy function called to transmit multiple packets.
- RTND_MEDIA_CONNECT_STATE is used in RtndRequest, RtNalRequest, and RtnRequest with RTND_OID_GEN_MEDIA_CONNECT_STATUS OID to get the status of the interface Ethernet connection.
- RTND_MEDIA_DUPLEX_STATE is used in RtndRequest, RtNalRequest, and RtnRequest with RTND_OID_GEN_MEDIA_DUPLEX_STATE OID to get the duplex of the interface Ethernet connection
- RTND_MEDIA_SPEED is used in RtndRequest, RtNalRequest, and RtnRequest with RTND_OID_GEN_LINK_SPEED OID to get the speed of the interface Ethernet connection.
- Added new Real-time Network Abstraction Layer (RtNal) functions and structures:
- RtNalEnumInterfaceInfo retrieves information on Network Abstraction Layer (NAL) interfaces. (4504)
- RtNalGetInfo retrieves the current NAL settings.
- RTNAL_INFO is a structure that specifies information to RtNalGetInfo about the current Network Abstraction Layer (NAL) settings.
- RTNAL_INTERFACE is a structure that specifies interface data for functions RtndInitializeInterface and RtNalEnumInterfaceInfo.
- RTNAL_PHYSICAL_ADDRESS represents the physical address in NAL and NIC drivers.
- RTNAL_ETHERTYPE_FILTER is a parameter to RtndIoctl to set, get, or remove an Ethernet type filter with ioctls RTNAL_IOCTL_SET_RX_ETHERTYPE_FILTER, RTNAL_IOCTL_GET_RX_ETHERTYPE_FILTER, and RTNAL_IOCTL_CLEAR_RX_ETHERTYPE_FILTER.
- RTNAL_PCI_LOCATION is a parameter to RtndIoctl call to get the PCI Bus location of the interface.
- RTNAL_PTP_SET_TIMESTAMP_TYPE_ARGUMENTS is a parameter for RtndIoctl to set the PTP Receive packet type to be timestamped. It is used with ioctls RTNAL_IOCTL_SET_RX_MESSAGE_TYPE_TO_TIMESTAMP and RTNAL_IOCTL_SET_TX_MESSAGE_TYPE_TO_TIMESTAMP.
Native Framework APIs
- Added a new enumeration RTFW_COMPONENT_STATUS, which represents the status of an RTX64 component.
NOTE: This enumeration replaces the RTFW_SUBSYSTEM_STATUS enumeration from versions previous to RTX64 4.0.
- Added new Real-time Native Framework functions and structures:
- RtfwStartNAL starts the Network Abstraction Layer (NAL).
- RtfwStopNAL stops the Network Abstraction Layer (NAL).
- RtfwStartTCPIPStack starts the RT-TCP/IP Stack.
- RtfwStopTCPIPStack stops the RT-TCP/IP Stack.
- RtfwGetNALStatus returns the status of the Network Abstraction Layer (NAL).
- RtfwGetTCPIPStatus returns the status of the RT-TCP/IP Stack.
- RtfwGetNALConfiguration returns the configuration of the Network Abstraction Layer (NAL).
- RtfwSetNALConfiguration configures the Network Abstraction Layer (NAL).
- RTFW_NAL_CONFIGURATION represents the configuration of the Network Abstraction Layer (NAL).
NOTE: This structure replaces the RTFW_NETWORK_CONFIGURATION structure from versions previous to RTX64 4.0.
- RtfwGetTCPIPConfiguration returns the configuration of the RT-TCP/IP Stack.
- RtfwSetTCPIPConfiguration configures the RT-TCP/IP Stack.
- RTFW_TCPIP_CONFIGURATION represents the configuration of the RT-TCP/IP Stack.
NOTE: This structure replaces the RTFW_NETWORK_CONFIGURATION structure from versions previous to RTX64 4.0.
- RtfwGetNetworkVerbosity returns whether verbosity is enabled or disabled for the network (NAL and TCP/IP Stack).
- RtfwSetNetworkVerbosity enables or disables verbosity across the network (NAL and TCP/IP Stack).
- Added new Real-time Native Framework APIs for configuring Local Memory (8303, 8493):
- RtfwGetLocalMemoryConfiguration returns the Local Memory MSpaces configuration for the RTX64 Subsystem.
- RtfwSetLocalMemoryConfiguration sets the Local Memory MSpaces configuration for the RTX64 Subsystem.
- RtfwGetNALLocalMemoryConfiguration returns the local memory configuration of the Network Abstraction Layer (NAL).
- RtfwSetNALLocalMemoryConfiguration specifies the local memory configuration of the Network Abstraction Layer (NAL).
- RtfwGetTCPIPLocalMemoryConfiguration returns the local memory configuration of the RT-TCP/IP Stack.
- RtfwSetTCPIPLocalMemoryConfiguration specifies the local memory configuration of the RT-TCP/IP Stack.
- RTFW_LOCAL_MEMORY_CONFIGURATION represents the configuration of the RTX64 Subsystem and its use of Local Memory MSpaces.
- RTFW_NETWORK_LOCAL_MEMORY_CONFIGURATION represents the configuration of the real-time network and its use of Local Memory MSpaces.
- Added new members to Real-time Native Framework structure RTFW_SCHEDULED_PROCESS (8307):
- MSpaceInitialSize specifies the size, in kilobytes, by which to allocate Non-Paged memory from Windows into the Local Pool of the MSpace at process startup.
- MSpaceExpandSize specifies the size, in kilobytes, by which to expand an RTSS processes' internal/external MSpaces.
Managed Framework APIs
- Added new properties to Managed Framework class IntervalZero.RTX64.Config.ScheduledProcess (8307):
- MSpaceInitialSize gets/sets the size, in kilobytes, by which to allocate Non-Paged memory from Windows into the Local Pool of the MSpace at process startup.
- MSpaceExpandSize gets/sets the size, in kilobytes, by which to expand an RTSS processes' internal/external MSpaces.
- Added new APIs to Managed Framework class IntervalZero.RTX64.RTAPI.RtssEnvironment (8320):
- Method GetProcessMSpace retrieves a descriptor of the external and internal memory allocation space (MSpace) for the specified RTSS process or system process.
- Method QueryProcessMSpace queries memory allocation space information for the specified process MSpace, including various summary statistics of its local pool and pool cache.
- Structure MSPACE_INFO contains information for a single memory allocation space (MSpace).
- Added new local memory configuration properties to Managed Framework class IntervalZero.RTX64.Config.Subsystem (8303, 8493):
- EnableLocalMemory accesses the configuration parameter that specifies whether the RTX64 Subsystem uses Local memory (MSpaces) or Windows memory. If true, the real-time Subsystem memory allocation uses Local memory MSpaces. If false, the Subsystem allocates memory by requesting it from Windows.
- NALExtMSpacePoolMinimumSize accesses the configuration parameter that specifies the minimum size, in kilobytes, of the local pool within the Network Abstraction Layer (NAL) external MSpace.
- NALMSpacesPoolExpandable accesses the configuration parameter that specifies whether the local pool within the Network Abstraction Layer (NAL) MSpaces is expandable. If true, the local pool within the NAL MSpace is expandable by the amount specified by NALMSpacesPoolExpandSize when depleted.
- NALMSpacesPoolExpandSize accesses the configuration parameter that specifies the size, in kilobytes, by which to expand the local pool within the Network Abstraction Layer (NAL) MSpaces when NALMSpacesPoolExpandable is set to true.
- ProcessExtMSpacePoolMinimumSize accesses the configuration parameter that specifies the minimum size, in kilobytes, of the local pool within the RTSS process external MSpace.
- ProcessIntMSpacePoolMinimumSize accesses the configuration parameter that specifies the minimum size, in kilobytes, of the local pool within the RTSS process internal MSpace.
- ProcessMSpacesPoolExpandable accesses the configuration parameter that specifies whether the local pool within the RTSS process MSpace is expandable. If true, the local pool within the RTSS process MSpace is expandable by the amount specified by ProcessMSpacesPoolExpandSize when depleted.
- ProcessMSpacesPoolExpandSize accesses the configuration parameter that specifies the size, in kilobytes, by which to expand the local pool within the RTSS process MSpace when ProcessMSpacesPoolExpandable is set to true.
- ProcessMSpacesPoolShrinkable accesses the configuration parameter that specifies whether the local pool within the RTSS process MSpace is shrinkable.
- SystemExtMSpacePoolMinimumSize accesses the configuration parameter that specifies the minimum size, in kilobytes, of the local pool within the system process external MSpace.
- SystemIntMSpacePoolMinimumSize accesses the configuration parameter that specifies the minimum size, in kilobytes, of the local pool within the system process internal MSpace.
- SystemExtMSpacePoolCommit accesses the configuration parameter that specifies whether the local pool within the system process external MSpace is committed at startup.
- SystemMSpacesPoolExpandable accesses the configuration parameter that specifies whether the local pool within the system process MSpace is expandable by the amount specified by SystemMSpacePoolExpandSize when depleted.
- SystemMSpacesPoolExpandSize accesses the configuration parameter that specifies the size, in kilobytes, by which to expand the local pool within the system process MSpace when SystemMSpacePoolExpandable is set to true.
- SystemMSpacesPoolShrinkable accesses the configuration parameter that specifies whether the local pool within the system process MSpace is shrinkable.
- TCPIPExtMSpacePoolMinimumSize accesses the configuration parameter that specifies the minimum size, in kilobytes, of the local pool within the RT-TCP-IP Stack external MSpace.
- TCPIPMSpacesPoolExpandable accesses the configuration parameter that specifies whether the local pool within the RT-TCP/IP Stack MSpace is expandable. If true, the local pool within the RT-TCP/IP Stack MSpace is expandable by the amount specified by TCPIPMSpacesPoolExpandSize when depleted.
- TCPIPMSpacesPoolExpandSize accesses the configuration parameter that specifies the size, in kilobytes, by which to expand the local pool within the RT-TCP/IP Stack MSpace when TCPIPMSpacesPoolExpandable is set to true.
- ZeroMemoryAtAllocation accesses the configuration parameter that specifies whether the memory allocated by malloc or similar C-Runtime functions is initialized to zero (according to the C99 specification).
- Added new method SetHALTimerPeriod to Managed Framework class IntervalZero.RTX64.Config.Subsystem, which sets the HAL timer period (in microseconds) for the RTX64 Subsystem.
- Added new method ResetToStart to Managed Framework class IntervalZero.RTX64.Monitor, which resets the event reader so the next call to EventReader.ReadEvents returns event(s) from the start of the monitoring session. (8725)
- Added new methods to Managed Framework class IntervalZero.RTX64.Control.Subsystem:
- GetNALStatus queries the status of the Network Abstraction Layer (NAL).
- GetTCPIPStatus queries the status of the RT-TCP/IP Stack.
- Added a new class to Managed Framework namespace IntervalZero.RTX64.Control, NetworkInterfaceStatus, which contains these new properties:
- Name indicates the name of the network interface.
- NALInterfaceStatus indicates the status of the NAL interface.
- TCPIPInterfaceStatus indicates the status of the TCP/IP interface.
- ErrorCode holds the native Windows or RTX64 custom error code, if either NALInterfaceStatus or TCPIPInterfaceStatus is ComponentStatus.Error.
- Changed RT-TCP/IP Stack-specific error codes to include the prefix RT_ERROR_STACK. (8161)
RTX64 Runtime
Help
- Resolved an issue where some Help topics caused the Help window to resize when viewed in Internet Explorer or Microsoft Edge. (7688)
Licensing
- Improved messaging in license validation errors. (8603)
-
Removed support for standard dongles to resolve 3rd party library conflicts that resulted from supporting multiple dongles. This issue typically manifested itself through automatic start issues where licenses were not recognized or the system crashed. (6945)
Subsystem
- Resolved an issue where attempts to start the RTX64 Subsystem on a VirtualBox 6.1.2 virtual machine would result in a Blue Screen. (8946)
Network and Drivers
- Resolved an issue where calling Winsock function select from an application with greater than 64 threads for the same socket caused RtssKill to hang. (8100)
- Resolved various issues where RtssKill did not successfully terminate socket applications. (7954)
- Resolved an error state that occurred when the IntervalZero debugger terminated an application attached to the RT-TCP/IP Stack that used local memory. (7853)
- Resolved an issue where RtssIPConfig revealed identical subnet masks of all configured IPs even when they were different. (5812)
- Resolved an issue where the return buffer in the RTND_REQUEST Network Adapter Information structure used by RtndRequest did not update correctly, which caused a crash in some scenarios. (4421)
- Resolved an issue where the RtNalIGB would not receive interrupts in MSI-X mode. (6701)
- Resolved issues where MSI-X mode interrupts did not work correctly on Intel I350 Ethernet Controller. (4296)
- Resolved an issue where only one select() call returned when the socket was closed when multiple threads made a select() call for the same socket. (8090)
- Resolved an issue where RtIGB devices sometimes initialized with semaphore timeout errors. (6995)
- Resolved an issue where attempts to initialize an interface resulted in an error when more than 31 Windows cores were configured. (6688)
- Resolved an issue where the TCP/IP Stack fragmented and reassembled packets larger than 64K on a Raw IP socket. (6416)
- Resolved an issue where the same IP address could be used in multiple Network Interface Cards (NICs) configured for RTX64. (5813)
- Resolved an issue where timestamps did not work with 82576 devices supported by the RtNalIGB driver. (7500)
- Resolved issues with the Virtual Network:
- Resolved an issue where the Windows Virtual RTX64 Adapter was listed as Disabled under Network Connections. (7775, 3959)
- Resolved an issue where the Virtual Network did not check for invalid transmit buffer values. (7700)
- Resolved an issue where disabling the Windows Virtual RTX64 Ethernet Adapter from Windows Device Manager while the Virtual Network was in use resulted in a Blue Screen. (7651)
- Resolved an issue where a system would fail to restart when the Subsystem was started with the Virtual Network enabled. (7526, 3989)
- Resolved an issue where an interface’s ideal processor was set incorrectly when a value about 32 was specified. (5130)
- Improved performance issues with the Virtual Network. (3947)
- Resolved an issue where Virtual Network properties could not be changed while the Virtual Network was in use. (3855)
- Fixed erroneous COM port definitions in the file
RTX64pnp.inf
. (8685) - Resolved an issue where application code needed to be recompiled when the number of sockets was increased via the RTX64 Control Panel. (5165)
- Resolved an issue where stopping the RT-TCP/IP Stack stopped NAL interfaces from transmitting in some scenarios. (7194)
- Resolved an issue where debug messages appeared when the RT-TCP/IP Stack was started with an i350 Quad NIC controlled by RTX64. (4293)
Tools and Utilities
- Resolved an issue where the RTX64 Analyzer displayed inconsistent information on RTX64-controlled NICs. (7934)
- Improved the Control Panel to select the correct default interrupt type for new and/or modified network interfaces based on the NIC hardware. (2718)
- Improved informational messages in the RTX64 Task Manager when a function cannot be performed. (8364)
- Resolved an issue where RTX64 System Tray would prematurely display a message that the Subsystem wasn’t licensed. (8260)
- Resolved an issue where the Monitoring tool displayed incorrect progress during conversion of a session file. (8233)
- Resolved an issue where RTX64 Analyzer output was missing information on the Virtual Network. (7310)
- Resolved an issue where MSRTM defaulted to getClockTime instead of timeStampCounter when the /c flag was not specified. (9012)
- Resolved an issue where the Monitor utility incorrectly converted event timestamps. (8928)
- Resolved an issue where the Activation and Configuration utility did not properly detect KINGSTAR components. (8693)
- Improved the error message that appears when RtssKill is run with a non-existent order ID for a scheduled task. (8324)
RTX64 SDK
Application Development and Debugging
- Resolved an issue where a Blue Screen occurred when free was called on memory allocated in an RTDLL built in the RTSSDebug configuration. (8088)
- Resolved an issue where the IntervalZero Real-Time Debugger did not display the call stack for some RTSS applications that included the C Runtime. (8169)
- Resolved an issue where static 8-bit arrays caused the IntervalZero Real-Time Debugger to freeze in Visual Studio 2019. (8473)
SDK
Real-Time
- Resolved an issue where Real-time Network API RtnInstallStaticRoute did not support IPv6. (3841)
- Resolved an issue where the Shutdown function failed on UDP sockets, returning error WSAEOPNOTSUPP. (7768)
- Resolved an issue where the wrong error was returned when parameter pHardware in function RtNalGetDeviceSystemTimer was set to NULL. (6991)
- Added logic to Real-time function RtIsAppRunnable to ensure it returns FALSE when passed a binary that is not an RTSS application. (7483)
- Resolved an issue where Real-time APIs RtMonitorControl and RtMonitorChangeState returned an incorrect error code when Monitoring was paused. (8328)
- Improved RtWaitForMultipleObjects to return the appropriate error when provided a NULL handle. (8587)
Native Framework
- Resolved an issue where parameter pDisableIdleDetection in Native Framework function RtfwGetWindowsIdleDetection returned incorrect values. (9121)
- Resolved an issue where Native Framework functions RtfwCreateNetworkInterface and RtfwModifyNetworkInterface did not reject NIC configurations that contained duplicate IPv6 addresses. (6405)
Managed Framework
- Resolved an issue where C++ IP validation logic erroneously rejected an IP address of 123.255.123.000. (8002)
- Resolved an issue where Managed Framework Class IntervalZero.RTX64.Config.Network allowed a client to create multiple instances with the same TCP/IP Stack instance ID, but with different network interfaces in the internal interface list. (3106)
- Resolved issues with garbage collection in the Managed Framework. (8306)
Samples
- Resolved an issue where the NalDataStream sample didn’t print link status. (4468)
- Resolved an issue where the NalDataStream sample worked properly even when incorrect parameters were specified. (8734)
- Resolved an issue where the RtTcpipServer.rtss application didn’t validate incorrect flags. (8739)
RTX64 Runtime
Compatibility
- Unlike with previous versions, RTX64 4.0 is not always compatible with RTSS processes built with a prior version of RTX64. 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
- RTX64 4.0 requires a 4.0 license. Licenses for RTX64 3.x and previous versions will not work with RTX64 4.0.
- RTX64 4.0 only supports small form factor dongles. The standard dongles supported by previous versions are no longer supported. If RTX64 4.0 is installed on a system, standard dongles will no longer work for previous versions installed on the same system.
General
- In previous versions, Use Windows memory (non-deterministic) was the default memory allocation selection. As of RTX64 4.0, Use local memory (deterministic) is the default memory allocation selection. See Memory Management for more information.
- We modified our registry content to better handle Windows feature updates that tend to reset the CurrentControlSet area of the registry.
- 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.
Subsystem
- The minimum timeout value for the Watchdog Timer setting Monitor for runaway threads was changed from 1 microsecond to 1000 microseconds. (9233)
Network and Drivers
- The RT-TCP/IP Stack and Virtual Network are always installed by the RTX64 Runtime. The RT-TCP/IP Stack requires a separate license before it can be used. (8874)
- RT-TCP/IP Stack NIC drivers are no longer provided since the RT-TCP/IP Stack is layered on top of the Network Abstraction Layer (NAL). Only NAL drivers are installed. These drivers were previously available in the standalone version of the NAL. (7866)
- 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.
Tools and Utilities
- Due to changes to RTX64 local memory architecture, RtssRun no longer allows RTSS applications to:
- request memory from the RTX64 local memory pool instead of from Windows whenever memory is allocated (previously supported with parameter /l)
- request memory from the Windows non-paged pool instead of the RTX64 local memory pool whenever memory is allocated (previously supported with parameter /n).
Application Development
- Due to changes to RTX64 local memory architecture, real-time processes cannot be configured to use Windows memory if the Subsystem is configured to use Local Memory.
- Visual Studio templates no longer include debug library StartupCRTd.lib under the linker options in RTSSDebug configurations.
- 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.0:
Visual Studio version | Tested Windows SDK versions |
---|---|
2019 | 10.0.18362.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.0.
- The following header files were renamed:
- ErrorCodes.h has been renamed RtErrorCodes.h
- Licensing.h has been renamed RtLicensing.h
- Due to changes to RTX64 local memory architecture, you can no longer programmatically override memory allocation on a per-process basis. (8443)
- Field UseLocalMemory in structure RTPROCESS_INFORMATION was modified to always match the global memory allocation setting configured through the Control Panel.
- Real-time Native Framework function RtfwSetSubsystemConfiguration must be run with Administrator privileges. The function will fail otherwise. (8456)
- The maximum MaxSockets value was changed to 1024 in Native Framework structure RTFW_NETWORK_CONFIGURATION and the Network.MaxSockets Managed Code property. (7499)
RTX64 Runtime
General
- 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.0 SDK is already installed and then active 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)
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
- RTX64 4.0 tools 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)
- A Blue Screen occurs when RtssKill is used to terminate a child RTSS process created by RtCreateProcess from its parent, where the child process includes TLS usage to suspend itself. To avoid this issue, use RtssRun to create the child process. (8563)
RTX64 SDK
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)
Samples
- The RDTPerformance sample may hang when debugged on machines with a high number of cores. (8907)