1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
|
/* $OpenBSD: hilioctl.h,v 1.2 1997/01/12 15:12:43 downsj Exp $ */
/* $NetBSD: hilioctl.h,v 1.6 1994/10/26 07:24:14 cgd Exp $ */
/*
* Copyright (c) 1988 University of Utah.
* Copyright (c) 1990, 1993
* The Regents of the University of California. All rights reserved.
*
* This code is derived from software contributed to Berkeley by
* the Systems Programming Group of the University of Utah Computer
* Science Department.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. All advertising materials mentioning features or use of this software
* must display the following acknowledgement:
* This product includes software developed by the University of
* California, Berkeley and its contributors.
* 4. Neither the name of the University nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* from: Utah $Hdr: hilioctl.h 1.10 92/01/21$
*
* @(#)hilioctl.h 8.1 (Berkeley) 6/10/93
*/
struct _hilbell {
u_char duration;
u_char frequency;
};
struct _hilbuf16 {
u_char string[16];
};
struct _hilbuf11 {
u_char string[11];
};
struct _hilbuf5 {
u_char string[5];
};
struct _hilbuf4 {
u_char string[4];
};
struct _hilbuf2 {
u_char string[2];
};
struct hilqinfo {
int qid;
char *addr;
};
/*
* HPUX ioctls (here for the benefit of the HIL driver).
* Named as they are under HPUX.
* The first set are loop device ioctls.
* The second set are ioctls for the 8042.
* Note that some are not defined as in HPUX
* due to the difference in the definitions of IOC_VOID.
*/
#ifdef hp800
#define _IOHpux(x,y) _IO(x,y)
#else
#define _IOHpux(x,y) (IOC_IN|((x)<<8)|y) /* IOC_IN is IOC_VOID */
#endif
/*
* The HP compiler (at least as of HP-UX 7.X) pads odd sized structures
* to a short boundary. To avoid issues of whether our compiler pads
* and, if so to what boundary, we explicitly state the values for
* troublesome ioctls:
*
* HILID (HILIOCID) _IOR('h',0x03, struct _hilbuf11),
* EFTRRT (HILIOCRRT) _IOR('H',0x31, struct _hilbuf5).
*/
#define HILID 0x400C6803 /* Identify & describe */
#define HILSC _IOR('h',0x33, struct _hilbuf16) /* Security code */
#define HILRN _IOR('h',0x30, struct _hilbuf16) /* Report name */
#define HILRS _IOR('h',0x31, struct _hilbuf16) /* Report status */
#define HILED _IOR('h',0x32, struct _hilbuf16) /* Extended describe*/
#define HILDKR _IOHpux('h',0x3D) /* Disable autorepeat */
#define HILER1 _IOHpux('h',0x3E) /* Autorepeat 1/30 */
#define HILER2 _IOHpux('h',0x3F) /* Autorepeat 1/60 */
#define HILP1 _IOHpux('h',0x40) /* Prompt 1 */
#define HILP2 _IOHpux('h',0x41) /* Prompt 2 */
#define HILP3 _IOHpux('h',0x42) /* Prompt 3 */
#define HILP4 _IOHpux('h',0x43) /* Prompt 4 */
#define HILP5 _IOHpux('h',0x44) /* Prompt 5 */
#define HILP6 _IOHpux('h',0x45) /* Prompt 6 */
#define HILP7 _IOHpux('h',0x46) /* Prompt 7 */
#define HILP _IOHpux('h',0x47) /* Prompt */
#define HILA1 _IOHpux('h',0x48) /* Acknowledge 1 */
#define HILA2 _IOHpux('h',0x49) /* Acknowledge 2 */
#define HILA3 _IOHpux('h',0x4A) /* Acknowledge 3 */
#define HILA4 _IOHpux('h',0x4B) /* Acknowledge 4 */
#define HILA5 _IOHpux('h',0x4C) /* Acknowledge 5 */
#define HILA6 _IOHpux('h',0x4D) /* Acknowledge 6 */
#define HILA7 _IOHpux('h',0x4E) /* Acknowledge 7 */
#define HILA _IOHpux('h',0x4F) /* Acknowledge */
#define EFTSRD _IOW('H',0xa0,char) /* Set the repeat delay. */
#define EFTSRR _IOW('H',0xa2,char) /* Set the repeat rate. */
#define EFTSRPG _IOW('H',0xa6,char) /* Set RPG interrupt rate. */
#define EFTSBP _IOW('H',0xc4,struct _hilbuf4) /* Send data to the beeper. */
#define EFTRLC _IOR('H',0x12,char) /* Read the language code. */
#define EFTRCC _IOR('H',0x11,char) /* Read configuration code. */
#define EFTRRT 0x40064831 /* Read the real time. */
#define EFTRT _IOR('H',0xf4,struct _hilbuf4) /* Read the timers for the
four voices. */
#ifdef hp800
#define EFTSBI _IOW('H',0xa3,char) /* Do the beep thing. */
#else
#define EFTSBI _IOW('H',0xa3,struct _hilbuf2) /* Set the bell information. */
#endif
/*
* BSD ioctls.
* Mostly the same as the HPUX versions except for shared-queue ioctls.
*/
#define OHILIOCID 0x400B6803 /* XXX compat */
#define HILIOCID HILID
#define HILIOCSC _IOR('h',0x33, struct _hilbuf16)
#define HILIOCRN _IOR('h',0x30, struct _hilbuf16)
#define HILIOCRS _IOR('h',0x31, struct _hilbuf16)
#define HILIOCED _IOR('h',0x32, struct _hilbuf16)
#define HILIOCAROFF _IO('h',0x3D)
#define HILIOCAR1 _IO('h',0x3E)
#define HILIOCAR2 _IO('h',0x3F)
#define HILIOCSBP _IOW('H',0xc4,struct _hilbuf4)
#define OHILIOCRRT 0x40054831 /* XXX compat */
#define HILIOCRRT EFTRRT
#define HILIOCRT _IOR('H',0xf4,struct _hilbuf4)
#define HILIOCBEEP _IOW('H',0xA3,struct _hilbell)
# define BELLDUR 80 /* tone duration in msec (10 - 2560) */
# define BELLFREQ 8 /* tone frequency (0 - 63) */
#define HILIOCALLOCQ _IOWR('H',0x72, struct hilqinfo) /* allocate queue */
#define HILIOCFREEQ _IOW('H',0x73, struct hilqinfo) /* deallocate queue */
#define HILIOCMAPQ _IOW('H',0x74, int) /* map device to queue */
#define HILIOCUNMAPQ _IOW('H',0x75, int) /* unmap device from dev */
#define HILIOCTEST _IOW('H',0x76, int) /* Toggle debugging mode */
#define HILIOCHPUX _IO('H',0x77) /* use HPUX (read) semantics */
#define HILIOCRESET _IO('H',0x78) /* Reset the HIL loop. */
/*
* HIL input queue.
* This is the circular queue (allocated by HILIOCALLOC) shared by kernel
* and user. It consists of a sixteen byte header followed by space for
* 255 input data packets (a total of 4096 bytes). The kernel adds packets
* at tail. The user is expected to remove packets from head. This is the
* only field in the header that the user should modify.
*/
typedef struct hil_packet {
u_char size; /* total packet size */
u_char dev; /* loop device packet was generated by */
long tstamp; /* time stamp */
u_char data[10]; /* device data */
} hil_packet;
typedef struct hil_eventqueue {
int size;
int head;
int tail;
int pad;
} hil_eventqueue;
typedef union hilqueue {
char hqu_size[0x1000];
struct q_data {
hil_eventqueue h_eventqueue;
hil_packet h_event[1];
} q_data;
#define hil_evqueue q_data.h_eventqueue
#define hil_event q_data.h_event
} HILQ;
#define HEVQSIZE \
((sizeof(HILQ) - sizeof(struct q_data)) / sizeof(hil_packet) + 1)
|