Deleted Added
full compact
vkbd.c (137776) vkbd.c (139204)
1/*
2 * vkbd.c
3 *
4 * Copyright (c) 2004 Maksim Yevmenkin <m_evmenkin@yahoo.com>
5 * All rights reserved.
6 *
7 * Redistribution and use in source and binary forms, with or without
8 * modification, are permitted provided that the following conditions

--- 12 unchanged lines hidden (view full) ---

21 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
22 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
23 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
24 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
25 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
26 * SUCH DAMAGE.
27 *
28 * $Id: vkbd.c,v 1.20 2004/11/15 23:53:30 max Exp $
1/*
2 * vkbd.c
3 *
4 * Copyright (c) 2004 Maksim Yevmenkin <m_evmenkin@yahoo.com>
5 * All rights reserved.
6 *
7 * Redistribution and use in source and binary forms, with or without
8 * modification, are permitted provided that the following conditions

--- 12 unchanged lines hidden (view full) ---

21 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
22 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
23 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
24 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
25 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
26 * SUCH DAMAGE.
27 *
28 * $Id: vkbd.c,v 1.20 2004/11/15 23:53:30 max Exp $
29 * $FreeBSD: head/sys/dev/vkbd/vkbd.c 137776 2004-11-16 16:59:23Z emax $
29 * $FreeBSD: head/sys/dev/vkbd/vkbd.c 139204 2004-12-22 17:36:38Z phk $
30 */
31
32#include "opt_kbd.h"
33
34#include <sys/param.h>
35#include <sys/conf.h>
30 */
31
32#include "opt_kbd.h"
33
34#include <sys/param.h>
35#include <sys/conf.h>
36#include <sys/fcntl.h>
36#include <sys/kbio.h>
37#include <sys/kernel.h>
38#include <sys/limits.h>
39#include <sys/lock.h>
40#include <sys/malloc.h>
41#include <sys/module.h>
42#include <sys/mutex.h>
43#include <sys/poll.h>
44#include <sys/proc.h>
45#include <sys/queue.h>
37#include <sys/kbio.h>
38#include <sys/kernel.h>
39#include <sys/limits.h>
40#include <sys/lock.h>
41#include <sys/malloc.h>
42#include <sys/module.h>
43#include <sys/mutex.h>
44#include <sys/poll.h>
45#include <sys/proc.h>
46#include <sys/queue.h>
47#include <sys/selinfo.h>
46#include <sys/systm.h>
47#include <sys/taskqueue.h>
48#include <sys/uio.h>
48#include <sys/systm.h>
49#include <sys/taskqueue.h>
50#include <sys/uio.h>
49#include <sys/vnode.h>
50#include <dev/kbd/kbdreg.h>
51#include <dev/kbd/kbdtables.h>
52#include <dev/vkbd/vkbd_var.h>
53
54#define DEVICE_NAME "vkbdctl"
55#define KEYBOARD_NAME "vkbd"
56
57MALLOC_DECLARE(M_VKBD);

--- 244 unchanged lines hidden (view full) ---

302 status.leds = KBD_LED_VAL(kbd);
303 status.lock = state->ks_state & LOCK_MASK;
304 status.delay = kbd->kb_delay1;
305 status.rate = kbd->kb_delay2;
306 bzero(status.reserved, sizeof(status.reserved));
307
308 error = uiomove(&status, sizeof(status), uio);
309 } else {
51#include <dev/kbd/kbdreg.h>
52#include <dev/kbd/kbdtables.h>
53#include <dev/vkbd/vkbd_var.h>
54
55#define DEVICE_NAME "vkbdctl"
56#define KEYBOARD_NAME "vkbd"
57
58MALLOC_DECLARE(M_VKBD);

--- 244 unchanged lines hidden (view full) ---

303 status.leds = KBD_LED_VAL(kbd);
304 status.lock = state->ks_state & LOCK_MASK;
305 status.delay = kbd->kb_delay1;
306 status.rate = kbd->kb_delay2;
307 bzero(status.reserved, sizeof(status.reserved));
308
309 error = uiomove(&status, sizeof(status), uio);
310 } else {
310 if (flag & IO_NDELAY) {
311 if (flag & O_NONBLOCK) {
311 error = EWOULDBLOCK;
312 goto done;
313 }
314
315 error = VKBD_SLEEP(state, ks_flags, "vkbdr", 0);
316 if (error != 0)
317 goto done;
318

--- 45 unchanged lines hidden (view full) ---

364 else
365 avail = 0; /* queue must be full */
366 } else if (q->head < q->tail)
367 avail = sizeof(q->q)/sizeof(q->q[0]) - q->tail;
368 else
369 avail = q->head - q->tail;
370
371 if (avail == 0) {
312 error = EWOULDBLOCK;
313 goto done;
314 }
315
316 error = VKBD_SLEEP(state, ks_flags, "vkbdr", 0);
317 if (error != 0)
318 goto done;
319

--- 45 unchanged lines hidden (view full) ---

365 else
366 avail = 0; /* queue must be full */
367 } else if (q->head < q->tail)
368 avail = sizeof(q->q)/sizeof(q->q[0]) - q->tail;
369 else
370 avail = q->head - q->tail;
371
372 if (avail == 0) {
372 if (flag & IO_NDELAY) {
373 if (flag & O_NONBLOCK) {
373 error = EWOULDBLOCK;
374 break;
375 }
376
377 error = VKBD_SLEEP(state, ks_inq, "vkbdw", 0);
378 if (error != 0)
379 break;
380 } else {

--- 941 unchanged lines hidden ---
374 error = EWOULDBLOCK;
375 break;
376 }
377
378 error = VKBD_SLEEP(state, ks_inq, "vkbdw", 0);
379 if (error != 0)
380 break;
381 } else {

--- 941 unchanged lines hidden ---