Take a look at the struct timer_list in include/linux/timer.h (ignore the"old" timers). Then look through a kernel driver which uses them and seehow they are used (a good example is drivers/net/tulip.c; grep for timer).It works somewhat like a signal handler, in that you have a functionreturning void that is run asynchronously when the signal is raised (inthis case, the timer expires). Instead of taking the signal as theargument, the function will take a value you specify in the timer_list.Just be mindful of how you allocate the struct and care for it; it is notcopied when queued, so accessing it/freeing it will break you. Also, thetimer runs at interrupt-time as well, so you can't sleep/etc there, either.