Lines Matching defs:ms
1 /* $NetBSD: ms.c,v 1.40 2014/07/25 08:10:39 dholland Exp $ */
40 * @(#)ms.c 8.1 (Berkeley) 6/11/93
55 __KERNEL_RCSID(0, "$NetBSD: ms.c,v 1.40 2014/07/25 08:10:39 dholland Exp $");
115 struct ms_softc *ms;
117 ms = device_lookup_private(&ms_cd, minor(dev));
118 if (ms == NULL)
122 if (ms->ms_events.ev_io)
125 if (ms->ms_deviopen) {
127 err = (*ms->ms_deviopen)(ms->ms_dev, flags);
131 ms->ms_events.ev_io = l->l_proc;
132 ev_init(&ms->ms_events); /* may cause sleep */
134 ms->ms_ready = 1; /* start accepting events */
141 struct ms_softc *ms;
143 ms = device_lookup_private(&ms_cd, minor(dev));
144 ms->ms_ready = 0; /* stop accepting events */
145 ev_fini(&ms->ms_events);
147 ms->ms_events.ev_io = NULL;
148 if (ms->ms_deviclose) {
150 err = (*ms->ms_deviclose)(ms->ms_dev, flags);
160 struct ms_softc *ms;
162 ms = device_lookup_private(&ms_cd, minor(dev));
163 return ev_read(&ms->ms_events, uio, flags);
169 struct ms_softc *ms;
171 ms = device_lookup_private(&ms_cd, minor(dev));
179 ms->ms_events.ev_async = *(int *)data != 0;
183 if (-*(int *)data != ms->ms_events.ev_io->p_pgid
184 && *(int *)data != ms->ms_events.ev_io->p_pid)
189 if (*(int *)data != ms->ms_events.ev_io->p_pgid)
209 struct ms_softc *ms;
211 ms = device_lookup_private(&ms_cd, minor(dev));
212 return ev_poll(&ms->ms_events, events, l);
218 struct ms_softc *ms;
220 ms = device_lookup_private(&ms_cd, minor(dev));
221 return ev_kqfilter(&ms->ms_events, kn);
232 ms_input(struct ms_softc *ms, int c)
243 if (ms->ms_ready == 0)
246 ms->ms_byteno = -1;
251 ms->ms_byteno = 1; /* short form (3 bytes) */
253 ms->ms_byteno = 0; /* long form (5 bytes) */
262 switch (ms->ms_byteno) {
269 ms->ms_byteno = 2;
270 ms->ms_mb = (~c) & 0x7;
275 ms->ms_byteno = 4;
276 ms->ms_mb = (~c) & 0x7;
281 ms->ms_byteno = 3;
282 ms->ms_dx += (char)c;
287 ms->ms_byteno = 4;
288 ms->ms_dy += (char)c;
293 ms->ms_byteno = 5;
294 ms->ms_dx += (char)c;
299 ms->ms_byteno = -1; /* wait for button-byte again */
300 ms->ms_dy += (char)c;
309 if (ms->ms_wsmousedev != NULL && ms->ms_ready == 2) {
310 mb = ((ms->ms_mb & 4) >> 2) |
311 (ms->ms_mb & 2) |
312 ((ms->ms_mb & 1) << 2);
313 wsmouse_input(ms->ms_wsmousedev,
315 ms->ms_dx, ms->ms_dy, 0, 0,
317 ms->ms_dx = 0;
318 ms->ms_dy = 0;
330 get = ms->ms_events.ev_get;
331 put = ms->ms_events.ev_put;
332 fe = &ms->ms_events.ev_q[put];
345 fe = &ms->ms_events.ev_q[0]; \
349 mb = ms->ms_mb;
350 ub = ms->ms_ub;
364 if (ms->ms_dx) {
367 fe->value = ms->ms_dx;
370 ms->ms_dx = 0;
372 if (ms->ms_dy) {
375 fe->value = ms->ms_dy;
378 ms->ms_dy = 0;
382 ms->ms_ub = ub;
383 ms->ms_events.ev_put = put;
384 EV_WAKEUP(&ms->ms_events);