struct timer_list {
struct list_head entry;
unsigned long expires;
struct tvec_base *base;
void (*function)(unsigned long);
unsigned long data;
int slack;
}
SIZE: 28
struct timer_list safety_timer;
/* Initilialize safety timer */
init_timer(&di->safety_timer);
di->safety_timer.function = abx500_chargalg_safety_timer_expired;
di->safety_timer.data = (unsigned long) di;
di->safety_timer.expires = jiffies + HZ;
add_timer(&di->safety_timer);
static void abx500_chargalg_safety_timer_expired(unsigned long data)
{
struct abx500_chargalg *di = (struct abx500_chargalg *) data;
dev_err(di->dev, "Safety timer expired\n");
di->events.safety_timer_expired = true;
/* Trigger execution of the algorithm instantly */
queue_work(di->chargalg_wq, &di->chargalg_work);
}
有关 htimer?