#include "be_timer.h" #include #include #include MODULE_AUTHOR("Emanuel Berg "); MODULE_DESCRIPTION("Timer to book DRAM-accesses of a specific core."); MODULE_LICENSE("GPL"); void update_be_timer(void) { be_timer.expires = jiffies + HZ; add_timer(&be_timer); } void be_timer_throttle_be(void) { static int be_frozen = false; long long performed = 0; performed = query_BE_monitor(); if (performed > max_BE_mem_accesses) { if (!be_frozen) { freeze_BE_core(); be_frozen = true; } } } void be_timer_tick(unsigned long arg) { printk(KERN_INFO "Max BE memory accesses: %d\n", max_BE_mem_accesses); be_timer_throttle_be(); update_be_timer(); } int init_module(void) { init_timer(&be_timer); be_timer.function = be_timer_tick; be_timer.data = 0; update_be_timer(); return 0; } void cleanup_module(void) { if (!del_timer(&be_timer)) { printk(KERN_INFO "Couldn't remove BE timer!\n"); } }