16#ifndef CPP_API_EXTENSIONS_SRC_SME_OVERLAYS_CALLBACK_OVERLAY_H
17#define CPP_API_EXTENSIONS_SRC_SME_OVERLAYS_CALLBACK_OVERLAY_H
121 std::cerr <<
"[ERROR][get_rule_container]: Invalid stage for rule container! (" << _stage <<
")" << std::endl;
210 va_start( args, _name);
243 rule =
new sme::rules::pattern( va_arg( args, uint64_t), va_arg( args, uint64_t), va_arg( args, uint64_t));
252 std::cerr <<
"[ERROR][__add_rule]: Invalid stage for rule container! (" << _stage <<
")" << std::endl;
#define _keep_hot
Definition: _inline.h:32
#define NULL
Definition: _null.h:24
Interface and base class for all notification rule types.
Definition: I_pattern_rule.h:32
void action(std::function< void()> _action)
Binds a void(void) lambda as the callback action to this rule.
Definition: I_pattern_rule.h:71
class which houses all four rule containers, only allocated if utilized.
Definition: callback_overlay.h:72
callback_overlay()
Construct a new callback overlay object.
Definition: callback_overlay.h:78
pattern_rule_container * m_post_read
post_read rule container (ptr).
Definition: callback_overlay.h:276
~callback_overlay()
Destroy the callback overlay object.
Definition: callback_overlay.h:89
I_pattern_rule * add_rule(std::function< void()> _func, stage::E _stage, type::E _type, std::string _name,...)
add a rule to this entity.
Definition: callback_overlay.h:208
void process_pre_write_rules(uint64_t _old_value, uint64_t _new_value)
processes pre_write_rules.
Definition: callback_overlay.h:177
pattern_rule_container * m_pre_write
pre_write rule container (ptr).
Definition: callback_overlay.h:282
void deactivate_rule(stage::E _stage, std::string _name)
deactivates rule by name at stage.
Definition: callback_overlay.h:133
void process_post_write_rules(uint64_t _old_value, uint64_t _new_value)
processes post_write_rules.
Definition: callback_overlay.h:189
pattern_rule_container * get_rule_container(stage::E _stage)
Get the rule container object.
Definition: callback_overlay.h:102
_keep_hot I_pattern_rule * __add_rule(std::function< void()> _func, stage::E _stage, type::E _type, std::string _name, va_list &args)
real implementation of add a rule to this entity (decompressed va_list).
Definition: callback_overlay.h:227
void process_pre_read_rules(uint64_t _old_value, uint64_t _new_value)
processes pre_read_rules.
Definition: callback_overlay.h:153
pattern_rule_container * m_pre_read
pre_read rule container (ptr).
Definition: callback_overlay.h:270
void process_post_read_rules(uint64_t _old_value, uint64_t _new_value)
processes post_read_rules.
Definition: callback_overlay.h:165
void activate_rule(stage::E _stage, std::string _name)
activates rule by name at stage.
Definition: callback_overlay.h:143
pattern_rule_container * m_post_write
post_write rule container (ptr).
Definition: callback_overlay.h:288
tracks all rules of a single type for a particular target.
Definition: pattern_rule_container.h:38
void activate_rule(std::string _name)
activate rule by name.
Definition: pattern_rule_container.h:107
bool add_rule(std::string _name, I_pattern_rule *_rule, bool _active=true)
Adds a descendant of I_pattern_rule by name to this container.
Definition: pattern_rule_container.h:64
void deactivate_rule(std::string _name)
deactivate rule by name.
Definition: pattern_rule_container.h:87
void process_active_rules(uint64_t _old_value, uint64_t _new_value)
processes all active rules.
Definition: pattern_rule_container.h:128
rule specifically to monitor a single bit for falling edge.
Definition: falling_bit.h:31
rule executes if anything "masked" changes between the old and new value.
Definition: masked.h:30
Basic rule executes with access (no change required).
Definition: notify.h:30
rule executes if the masked pattern matches the start (old) and end (new) values.
Definition: pattern.h:31
rule specifically to monitor a single bit for rising edge.
Definition: rising_bit.h:31
Definition: expression_vector.h:25
point of a register/field read or write a rule executes on
Definition: callback_overlay.h:42
E
Definition: callback_overlay.h:43
@ POST_WRITE
Definition: callback_overlay.h:47
@ POST_READ
Definition: callback_overlay.h:45
@ PRE_READ
Definition: callback_overlay.h:44
@ PRE_WRITE
Definition: callback_overlay.h:46
type of rule to be applied
Definition: callback_overlay.h:55
E
Definition: callback_overlay.h:56
@ NOTIFY
Definition: callback_overlay.h:57
@ PATTERN
Definition: callback_overlay.h:59
@ FALLING_BIT
Definition: callback_overlay.h:61
@ ANY_RISE
Definition: callback_overlay.h:62
@ RISING_BIT
Definition: callback_overlay.h:60
@ MASKED
Definition: callback_overlay.h:58
@ NOT_IMPLEMENTED
Definition: callback_overlay.h:64
@ ALL_FALL
Definition: callback_overlay.h:63