This chapter introduced the following symbols:
#include <linux/param.h>
,
HZ
The HZ
symbol specifies the number of clock ticks
generated per second.
volatile unsigned long jiffies
The jiffies
variable is incremented once for
each clock tick; thus it’s incremented HZ
times
per second.
#include <linux/time.h>
,
void do_gettimeofday(struct timeval *tv);
This function returns the current time. It is not available in version 1.2 of the kernel.
#include <linux/delay.h>
,
void udelay(unsigned long usecs);
The udelay function delays an integer number of microseconds. It should be used to wait for no longer than one millisecond.
#include <linux/tqueue.h>
,
void queue_task(struct tq_struct *task, task_queue *list);
,
void queue_task_irq(struct tq_struct *task,
,
task_queue *list);
,
void queue_task_irq_off(struct tq_struct *task,
,
task_queue *list);
These functions register a task for later execution. The first function, queue_task, can always be called; the second can be called only from non-reentrant functions, and the last one can be called only when interrupts are disabled. Only the first function is available in recent kernels (see Section 17.4 in Chapter 17).
void run_task_queue(task_queue *list);
This function consumes a task queue.
task_queue tq_immediate, tq_timer, tq_scheduler;
These predefined task queues are run as soon as possible, after each timer tick, and before the kernel schedules a new process, respectively.
#include <linux/timer.h>
,
void init_timer(struct timer_list * timer);
This function initializes a newly allocated
timer
.
void add_timer(struct timer_list * timer);
This function inserts the timer
into the global list of
pending timers.
int del_timer(struct timer_list * timer);
del_timer removes a timer from the list of pending timers. If the timer was actually queued, del_timer returns 1, otherwise it returns 0.
18.220.11.34