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 --- |