3 ms·
This doesn’t work in a VM or if there’s an SMI or if there is any other glitch. There’s a more fundamental and harder-to-solve issue, though: time (CLOCK_MONOT
by amluto 3y ago
This doesn’t work in a VM or if there’s an SMI or if there is any other glitch.
There’s a more fundamental and harder-to-solve issue, though: time (CLOCK_MONOTONIC or whatever) is a function of the underlying clock source (TSC, for example), and that function is defined piecewise (and must be if it changes in ways that are not known in advance). And, fundamentally, if the thread evaluating the function after some change gets ahead of the thread making the change in the first place, it’s awkward to get the right answer without waiting.
The best I’ve come up with is for the thread running the show to record that, for TSC values above t, a new function is used, and to do this well in advance of t. I don’t know a way to do an atomic commit of a change if and only iff TSC < some threshold.
- loeg 3y agoYeah, SMIs are exactly the kind of very slow NMI I had in mind.