gem5
v20.1.0.0
|
A class to skip udelay() and related calls in the kernel. More...
#include <events.hh>
Public Member Functions | |
SkipUDelay (PCEventScope *s, const std::string &desc, Addr addr, uint64_t mult, uint64_t div) | |
void | process (ThreadContext *tc) override |
Private Attributes | |
uint64_t | argDivToNs |
Value to divide arg by to create ns. More... | |
uint64_t | argMultToNs |
Value to multiple arg by to create ns. More... | |
A class to skip udelay() and related calls in the kernel.
This class has two additional parameters that take the argument to udelay and manipulated it to come up with ns and eventually ticks to quiesce for. See descriptions of argDivToNs and argMultToNs below.
|
inline |
|
inlineoverride |
Definition at line 157 of file events.hh.
References Linux::SkipUDelay< Base >::argDivToNs, Linux::SkipUDelay< Base >::argMultToNs, and Linux::onUDelay().
|
private |
Value to divide arg by to create ns.
This is present beacues the linux kernel code sometime precomputes the first multiply that is done in udelay() if the parameter is a constant. We need to undo it so here is how.
Definition at line 141 of file events.hh.
Referenced by Linux::SkipUDelay< Base >::process().
|
private |
Value to multiple arg by to create ns.
Nominally, this is 1000 to convert us to ns, but since linux can do some preprocessing of constant values something else might be required.
Definition at line 148 of file events.hh.
Referenced by Linux::SkipUDelay< Base >::process().