1 /*
2 * Include file for a midi timer.
3 *
4 * Copyright by Seigo Tanimura 2002.
5 *
6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions
8 * are met:
9 * 1. Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer.
11 * 2. Redistributions in binary form must reproduce the above copyright
12 * notice, this list of conditions and the following disclaimer in the
13 * documentation and/or other materials provided with the distribution.
14 *
15 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
16 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
19 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
20 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
21 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
22 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
23 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
24 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
25 * SUCH DAMAGE.
26 *
27 * $FreeBSD: releng/5.0/sys/dev/sound/midi/timer.h 88870 2002-01-04 01:16:18Z tanimura $
28 *
29 */
30
31 #ifndef _TIMER_H_
32 #define _TIMER_H_
33
34 typedef struct _timerdev_info timerdev_info;
35
36 typedef int (tmr_open_t)(timerdev_info *tmd, int oflags, int devtype, struct thread *td);
37 typedef int (tmr_close_t)(timerdev_info *tmd, int fflag, int devtype, struct thread *td);
38 typedef int (tmr_event_t)(timerdev_info *tmd, u_char *ev);
39 typedef int (tmr_gettime_t)(timerdev_info *tmd, u_long *t);
40 typedef int (tmr_ioctl_t)(timerdev_info *tmd, u_long cmd, caddr_t data, int fflag, struct thread *td);
41 typedef int (tmr_armtimer_t)(timerdev_info *tmd, u_long t);
42
43 struct _timerdev_info {
44 /*
45 * the first part of the descriptor is filled up from a
46 * template.
47 */
48 char name[32];
49
50 int caps;
51 int prio;
52
53 tmr_open_t *open;
54 tmr_close_t *close;
55 tmr_event_t *event;
56 tmr_gettime_t *gettime;
57 tmr_ioctl_t *ioctl;
58 tmr_armtimer_t *armtimer;
59
60
61 int unit;
62 void *softc;
63 void *seq;
64
65 /* The tailq entry of the next timer device. */
66 TAILQ_ENTRY(_timerdev_info) tmd_link;
67
68 int opened;
69
70 struct mtx mtx;
71 };
72
73 #ifdef _KERNEL
74 int timerdev_install(void);
75 timerdev_info *create_timerdev_info_unit(timerdev_info *tmdinf);
76 timerdev_info *get_timerdev_info_unit(int unit);
77 timerdev_info *get_timerdev_info(void);
78 #endif /* _KERNEL */
79
80 #endif /* _TIMER_H_ */
Cache object: 3bde51528938f3d8f90b2087d2d2714d
|