int request_irq(unsigned int irq,
void (*handler)(),
unsigned long flags,
const char *dev_name,
void *dev_id);
struct tasklet_struct
{
struct tasklet_struct *next;
unsigned long state;
atomic_t count;
void (*func)(unsigned long);
unsigned long data;
};
extern struct tasklet_struct bh_task_vec[];
static inline void mark_bh(int nr)
{
tasklet_hi_schedule(bh_task_vec+nr);
}
extern unsigned long volatile jiffies;
void do_timer(struct pt_regs *regs)
{
(*(unsigned long *)&jiffies)++;
mark_bh(TIMER_BH);
if (TQ_ACTIVE(tq_timer))
mark_bh(TQUEUE_BH);
}
void timer_bh(void)
{
update_times();
run_timer_list();
}
ticks = jiffies - wall_jiffies;
if (ticks) {
wall_jiffies += ticks;
update_wall_time(ticks);
}
struct timer_list {
struct list_head list;
unsigned long expires;
unsigned long data;
void (*function)(unsigned long);
};
extern void add_timer(struct timer_list * timer);
extern int del_timer(struct timer_list * timer);