mutex_lock(&cyclic_lock);
-printk(KERN_INFO "cyc_alloc: flst [O] %p\n", cyc_flst);
if (cyc_flst == NULL) {
unsigned long nsize = cyc_size + CHUNKSIZE;
unsigned long idx = nsize;
idx = nsize;
cyc_flst = &cyc_arr[cyc_size];
-printk(KERN_INFO "cyc_alloc: flst [N] %p, size [N] %lu\n", cyc_flst, nsize);
cyc_arr[--idx].nxt = NULL;
-printk(KERN_INFO "cyc_alloc: cyc_arr[%lu] NULL\n", idx);
while (idx-- > cyc_size)
-{
cyc_arr[idx].nxt = &cyc_arr[idx + 1];
-printk(KERN_INFO "cyc_alloc: cyc_arr[%lu] %p\n", idx, cyc_arr[idx].nxt);
-}
cyc_size = nsize;
}
np = cyc_flst;
cyc_flst = cyc_flst->nxt;
-printk(KERN_INFO "cyc_alloc: cyc %p, flst [N] %p\n", np, cyc_flst);
mutex_unlock(&cyclic_lock);
cyc->cyc.hdlr.cyh_func(cyc->cyc.hdlr.cyh_arg);
hrtimer_forward_now(&cyc->cyc.timr, cyc->cyc.when.cyt_interval);
-printk(KERN_INFO "cyclic_fire_fn: Cyclic %p, hrtimer %p\n", cyc, timr);
-printk(KERN_INFO "cyclic_fire_fn: Next expiry in %lld ns (interval %lld)\n", hrtimer_expires_remaining(&cyc->cyc.timr).tv64, cyc->cyc.when.cyt_interval.tv64);
return HRTIMER_RESTART;
}
hrtimer_init(&cyc->cyc.timr, CLOCK_MONOTONIC, HRTIMER_MODE_REL);
cyc->cyc.timr.function = cyclic_fire_fn;
-printk(KERN_INFO "cyclic_add: Adding %p, hrtimer %p\n", cyc, &cyc->cyc.timr);
if (cyc->cyc.when.cyt_when.tv64 == 0)
-{
-printk(KERN_INFO "cyclic_add: Starting at relative %lld\n", cyc->cyc.when.cyt_interval.tv64);
hrtimer_start(&cyc->cyc.timr, cyc->cyc.when.cyt_interval,
HRTIMER_MODE_REL_PINNED);
-}
else
-{
-printk(KERN_INFO "cyclic_add: Starting at absolute %lld\n", cyc->cyc.when.cyt_when.tv64);
hrtimer_start(&cyc->cyc.timr, cyc->cyc.when.cyt_when,
HRTIMER_MODE_ABS_PINNED);
-}
return (cyclic_id_t)cyc;
}
{
cyclic_t *cyc = (cyclic_t *)id;
-printk(KERN_INFO "cyclic_add: Removing %p, hrtimer %p\n", cyc, &cyc->cyc.timr);
hrtimer_cancel(&cyc->cyc.timr);
mutex_lock(&cyclic_lock);