1 #ifndef _LINUX_TIMER_H
2 #define _LINUX_TIMER_H
3
4 /*
5 * DON'T CHANGE THESE!! Most of them are hardcoded into some assembly language
6 * as well as being defined here.
7 */
8
9 /*
10 * The timers are:
11 *
12 * BLANK_TIMER console screen-saver timer
13 *
14 * BEEP_TIMER console beep timer
15 *
16 * RS_TIMER timer for the RS-232 ports
17 *
18 * HD_TIMER harddisk timer
19 *
20 * HD_TIMER2 (atdisk2 patches)
21 *
22 * FLOPPY_TIMER floppy disk timer (not used right now)
23 *
24 * SCSI_TIMER scsi.c timeout timer
25 *
26 * NET_TIMER tcp/ip timeout timer
27 *
28 * COPRO_TIMER 387 timeout for buggy hardware..
29 *
30 * QIC02_TAPE_TIMER timer for QIC-02 tape driver (it's not hardcoded)
31 *
32 * MCD_TIMER Mitsumi CD-ROM Timer
33 *
34 */
35
36 #define BLANK_TIMER 0
37 #define BEEP_TIMER 1
38 #define RS_TIMER 2
39
40 #define HD_TIMER 16
41 #define FLOPPY_TIMER 17
42 #define SCSI_TIMER 18
43 #define NET_TIMER 19
44 #define SOUND_TIMER 20
45 #define COPRO_TIMER 21
46
47 #define QIC02_TAPE_TIMER 22 /* hhb */
48 #define MCD_TIMER 23
49
50 #define HD_TIMER2 24
51
52 struct timer_struct {
53 unsigned long expires;
54 void (*fn)(void);
55 };
56
57 extern unsigned long timer_active;
58 extern struct timer_struct timer_table[32];
59
60 /*
61 * This is completely separate from the above, and is the
62 * "new and improved" way of handling timers more dynamically.
63 * Hopefully efficient and general enough for most things.
64 *
65 * The "hardcoded" timers above are still useful for well-
66 * defined problems, but the timer-list is probably better
67 * when you need multiple outstanding timers or similar.
68 *
69 * The "data" field is in case you want to use the same
70 * timeout function for several timeouts. You can use this
71 * to distinguish between the different invocations.
72 */
73 struct timer_list {
74 struct timer_list *next;
75 struct timer_list *prev;
76 unsigned long expires;
77 unsigned long data;
78 void (*function)(unsigned long);
79 };
80
81 extern void add_timer(struct timer_list * timer);
82 extern int del_timer(struct timer_list * timer);
83
84 extern inline void init_timer(struct timer_list * timer)
/* ![[previous]](../icons/n_left.png)
![[next]](../icons/n_right.png)
![[first]](../icons/n_first.png)
![[last]](../icons/n_last.png)
![[top]](../icons/top.png)
![[bottom]](../icons/bottom.png)
![[index]](../icons/index.png)
*/
85 {
86 timer->next = NULL;
87 timer->prev = NULL;
88 }
89
90 #endif