CiCueTea v0.0.1
Loading...
Searching...
No Matches
RTChecker.h File Reference

RAII guard asserting that no Eigen heap activity (allocation or deallocation) happens inside real-time critical sections. More...

#include <Eigen/Core>

Go to the source code of this file.

Classes

class  jsa::cicuetea::RealTimeChecker

Detailed Description

RAII guard asserting that no Eigen heap activity (allocation or deallocation) happens inside real-time critical sections.

Author
Juan Sierra
Date
4/8/25

Armed by the REALTIME_CHECKS compile definition (CMake option of the same name) on top of EIGEN_RUNTIME_NO_MALLOC; the checks fire through eigen_assert, so they are active only in builds where assert is live (NDEBUG not defined) and cost nothing in release builds.

On Eigen >= 5 the guard also forbids deallocation explicitly: a free in the audio callback is as non-deterministic as a malloc. Note that Eigen 5.0.0/5.0.1 ship a typo (check_that_free_is_allowed tests the malloc flag, fixed on upstream master), so guarded frees assert there regardless — forbidding them deliberately keeps the guard's meaning identical across Eigen versions.