gem5  v20.1.0.0
Public Member Functions | Private Attributes | List of all members
FreeBSD::SkipUDelay< Base > Class Template Reference

A class to skip udelay() and related calls in the kernel. More...

#include <events.hh>

Inheritance diagram for FreeBSD::SkipUDelay< Base >:

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...
 

Detailed Description

template<typename Base>
class FreeBSD::SkipUDelay< Base >

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.

Definition at line 49 of file events.hh.

Constructor & Destructor Documentation

◆ SkipUDelay()

template<typename Base >
FreeBSD::SkipUDelay< Base >::SkipUDelay ( PCEventScope s,
const std::string &  desc,
Addr  addr,
uint64_t  mult,
uint64_t  div 
)
inline

Definition at line 64 of file events.hh.

Member Function Documentation

◆ process()

template<typename Base >
void FreeBSD::SkipUDelay< Base >::process ( ThreadContext tc)
inlineoverride

Member Data Documentation

◆ argDivToNs

template<typename Base >
uint64_t FreeBSD::SkipUDelay< Base >::argDivToNs
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 56 of file events.hh.

Referenced by FreeBSD::SkipUDelay< Base >::process().

◆ argMultToNs

template<typename Base >
uint64_t FreeBSD::SkipUDelay< Base >::argMultToNs
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 61 of file events.hh.

Referenced by FreeBSD::SkipUDelay< Base >::process().


The documentation for this class was generated from the following file:

Generated on Wed Sep 30 2020 14:02:39 for gem5 by doxygen 1.8.17