C/C++ API Reference
Loading...
Searching...
No Matches
pw::clock_tree::Element Class Referenceabstract

Overview

Abstract base class for a clock tree element of a clock tree.

Class implementations of Element must implement DoAcquireLocked and DoReleaseLocked functions. For clock tree elements that only get enabled / configured, it is sufficient to only override the DoEnable function, otherwise it is required to override the DoDisable function to disable the respective clock tree element.

Note: Clock tree element classes shouldn't be directly derived from the Element class, but from the ElementBlocking, ElementNonBlockingCannotFail or ElementNonBlockingMightFail class.

Inheritance diagram for pw::clock_tree::Element:
pw::clock_tree::ElementBlocking pw::clock_tree::ElementNonBlockingMightFail pw::clock_tree::ElementNonBlockingCannotFail pw::clock_tree::ClockSource< ElementNonBlockingCannotFail > pw::clock_tree::ClockMcuxpressoFro pw::clock_tree::ClockMcuxpressoLpOsc pw::clock_tree::ClockSourceNoOp

Public Member Functions

constexpr Element (bool may_block)
 
uint32_t ref_count () const
 Get reference count for this clock tree element.
 
bool may_block () const
 Check whether acquiring or releasing the element may block.
 
 Element (const Element &)=delete
 
 Element (const Element &&)=delete
 
Elementoperator= (const Element &)=delete
 
Elementoperator= (const Element &&)=delete
 
Status Acquire ()
 
Status Release ()
 
Status AcquireWith (Element &element_with)
 

Protected Member Functions

virtual Status DoAcquireLocked ()=0
 
virtual Status DoReleaseLocked ()=0
 
uint32_t IncRef ()
 Increment reference count and return incremented value.
 
uint32_t DecRef ()
 Decrement reference count and return decremented value.
 
virtual Status DoEnable ()=0
 Function called when the clock tree element needs to get enabled.
 
virtual Status DoDisable ()
 

Private Member Functions

virtual Status DoAcquire ()=0
 Handle Acquire(), deferring locking the child class.
 
virtual Status DoRelease ()=0
 Handle Release(), deferring locking the child class.
 

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