static void cec_timer_fn(unsigned long data) { struct ce_array *ca = (struct ce_array *)data; do_spring_cleaning(ca); cec_mod_timer(&cec_timer, timer_interval); }
static int decay_interval_set(void *data, u64 val) { *(u64 *)data = val; if (val < CEC_TIMER_MIN_INTERVAL) return -EINVAL; if (val > CEC_TIMER_MAX_INTERVAL) return -EINVAL; timer_interval = val; cec_mod_timer(&cec_timer, timer_interval); return 0; }
void __init cec_init(void) { if (ce_arr.disabled) return; ce_arr.array = (void *)get_zeroed_page(GFP_KERNEL); if (!ce_arr.array) { pr_err("Error allocating CE array page!\n"); return; } if (create_debugfs_nodes()) return; timer_setup(&cec_timer, cec_timer_fn, 0); cec_mod_timer(&cec_timer, CEC_TIMER_DEFAULT_INTERVAL); pr_info("Correctable Errors collector initialized.\n"); }
static void cec_timer_fn(struct timer_list *unused) { do_spring_cleaning(&ce_arr); cec_mod_timer(&cec_timer, timer_interval); }