]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - usr.bin/doscmd/timer.c
This commit was generated by cvs2svn to compensate for changes in r76589,
[FreeBSD/FreeBSD.git] / usr.bin / doscmd / timer.c
1 /*
2 ** No copyright?!
3 **
4 ** $FreeBSD$
5 */
6 #include "doscmd.h"
7
8 static void
9 int08(regcontext_t *REGS)
10 {
11     softint(0x1c);
12 }
13
14 static void
15 int1c(regcontext_t *REGS)
16 {
17 }
18
19 unsigned char timer;
20
21 static u_char
22 inb_timer(int port)
23 {
24     return (--timer);
25 }
26
27 void
28 timer_init(void)
29 {
30     u_long              vec;
31     struct itimerval    itv;
32
33     vec = insert_hardint_trampoline();
34     ivec[0x08] = vec;
35     register_callback(vec, int08, "int 08");
36     
37     vec = insert_softint_trampoline();
38     ivec[0x1c] = vec;
39     register_callback(vec, int1c, "int 1c");
40
41     define_input_port_handler(0x42, inb_timer);
42     define_input_port_handler(0x40, inb_timer);
43     
44     itv.it_interval.tv_sec = 0;
45     itv.it_interval.tv_usec = 54925; /* 1193182/65536 times per second */
46     itv.it_value.tv_sec = 0;
47     itv.it_value.tv_usec = 54925;        /* 1193182/65536 times per second */
48     if (! timer_disable)
49         setitimer(ITIMER_REAL, &itv, 0);
50 }