Assume I have a per-CPU variable declared with DEFINE_PER_CPU(struct var, var) and associated to each struct var is an attribute int count. This occurs during system initialization and is therefore (assumedly) located in init/main.c. Further assume that I have an increment_count() function defined as
void increment_count() {
per_cpu(var, get_cpu()).count += 1;
put_cpu();
}
I would like for increment_count to get called by the kernel every x milliseconds, beginning at system initialization. Some jitter in the timing interval is fine. How can this be implemented in practice? Furthermore, do I need to explicitly preempt the currently running thread to allow the increment_count() thread to run?