Updated: October 28, 2024 |
Rather than require the use of architecture-specific options (-mgeneral-regs-only for AArch64 or x86_64; there isn't such an option for ARMLE-v7) to force the compiler not to use these registers for an entire compilation unit, we decided to save all FP registers if and when an ISR first accesses any FP register, and to save the FP registers on entering a signal handler, trace event handler, or idle handler. We restore all the FP registers after leaving the ISR or handler. This has the following effects:
It's still possible to force an ISR to not use FP using the compiler options mentioned above (and therefore guarantee avoiding the performance hit of saving the FP registers), but if the ISR is in a C file that also has functions that explicitly use floating point, or would benefit from these optimizations, you can move the ISR to its own C file and use the appropriate flag to compile that file, but you need to be careful with preprocessor macros and calling functions that aren't in the C file.
For more information, see Secure Buffer Management in the Shared Memory chapter of the QNX Neutrino Programmer's Guide.
Event | Emitted when: |
---|---|
_NTO_TRACE_SEC_PERM_LOOKUP | secpol_get_permission() is called to get a handle to a permission that's associated with a custom class |
_NTO_TRACE_SEC_PERM_TEST | secpol_check_permission() is called to test if a given type has a permission |
_NTO_TRACE_SEC_UNREG_EVENT | MsgDeliverEvent() is called with an unregistered sigevent |
For more information, see the System Analysis Toolkit (SAT) User's Guide.