Changes for poll(2).

This commit is contained in:
mhitch 1996-10-11 21:12:43 +00:00
parent 3d5284e11e
commit c21fad0c51
6 changed files with 34 additions and 41 deletions

View File

@ -1,4 +1,4 @@
/* $NetBSD: event.c,v 1.4 1996/10/08 23:18:49 thorpej Exp $ */
/* $NetBSD: event.c,v 1.5 1996/10/11 21:12:43 mhitch Exp $ */
/*
* Copyright (c) 1992, 1993
@ -53,7 +53,9 @@
#include <sys/param.h>
#include <sys/fcntl.h>
#include <sys/malloc.h>
#include <sys/poll.h>
#include <sys/proc.h>
#include <sys/select.h>
#include <sys/systm.h>
#include <sys/vnode.h>
@ -86,7 +88,7 @@ ev_fini(ev)
}
/*
* User-level interface: read, select.
* User-level interface: read, poll.
* (User cannot write an event queue.)
*/
int
@ -147,28 +149,21 @@ ev_read(ev, uio, flags)
}
int
ev_select(ev, rw, p)
ev_poll(ev, events, p)
register struct evvar *ev;
int rw;
int events;
struct proc *p;
{
int s = splev();
int revents = 0;
switch (rw) {
case FREAD:
if (events & (POLLIN | POLLRDNORM))
/* succeed if there is something to read */
if (ev->ev_get != ev->ev_put) {
splx(s);
return (1);
}
selrecord(p, &ev->ev_sel);
break;
case FWRITE:
splx(s);
return (1); /* always fails => never blocks */
}
if (ev->ev_get != ev->ev_put)
revents |= events & (POLLIN | POLLRDNORM);
if (revents == 0)
if (events & (POLLIN | POLLRDNORM))
selrecord(p, &ev->ev_sel);
splx(s);
return (0);
return (revents);
}

View File

@ -1,4 +1,4 @@
/* $NetBSD: event_var.h,v 1.2 1994/10/26 02:03:00 cgd Exp $ */
/* $NetBSD: event_var.h,v 1.3 1996/10/11 21:12:46 mhitch Exp $ */
/*
* Copyright (c) 1992, 1993
@ -80,7 +80,7 @@ struct evvar {
void ev_init __P((struct evvar *));
void ev_fini __P((struct evvar *));
int ev_read __P((struct evvar *, struct uio *, int));
int ev_select __P((struct evvar *, int, struct proc *));
int ev_poll __P((struct evvar *, int, struct proc *));
/*
* PEVENT is set just above PSOCK, which is just above TTIPRI, on the

View File

@ -1,4 +1,4 @@
/* $NetBSD: grf.c,v 1.29 1996/10/10 23:55:39 christos Exp $ */
/* $NetBSD: grf.c,v 1.30 1996/10/11 21:12:50 mhitch Exp $ */
/*
* Copyright (c) 1988 University of Utah.
@ -57,6 +57,7 @@
#include <sys/systm.h>
#include <sys/vnode.h>
#include <sys/mman.h>
#include <sys/poll.h>
#include <vm/vm.h>
#include <vm/vm_kern.h>
#include <vm/vm_page.h>
@ -302,14 +303,12 @@ grfioctl(dev, cmd, data, flag, p)
/*ARGSUSED*/
int
grfselect(dev, rw, p)
grfpoll(dev, events, p)
dev_t dev;
int rw;
int events;
struct proc *p;
{
if (rw == FREAD)
return(0);
return(1);
return(events & (POLLOUT | POLLWRNORM));
}
/*

View File

@ -1,4 +1,4 @@
/* $NetBSD: kbd.c,v 1.24 1996/10/10 23:56:16 christos Exp $ */
/* $NetBSD: kbd.c,v 1.25 1996/10/11 21:12:51 mhitch Exp $ */
/*
* Copyright (c) 1982, 1986, 1990 The Regents of the University of California.
@ -274,12 +274,12 @@ kbdioctl(dev, cmd, data, flag, p)
}
int
kbdselect(dev, rw, p)
kbdpoll(dev, events, p)
dev_t dev;
int rw;
int events;
struct proc *p;
{
return ev_select (&kbd_softc.k_events, rw, p);
return ev_poll (&kbd_softc.k_events, events, p);
}

View File

@ -1,4 +1,4 @@
/* $NetBSD: ms.c,v 1.11 1996/10/10 23:56:22 christos Exp $ */
/* $NetBSD: ms.c,v 1.12 1996/10/11 21:12:53 mhitch Exp $ */
/*
* based on:
@ -424,14 +424,14 @@ msioctl(dev, cmd, data, flag, p)
}
int
msselect(dev, rw, p)
mspoll(dev, events, p)
dev_t dev;
int rw;
int events;
struct proc *p;
{
struct ms_softc *ms;
ms = (struct ms_softc *)getsoftc(ms_cd, minor(dev));
return(ev_select(&ms->ms_events, rw, p));
return(ev_poll(&ms->ms_events, events, p));
}

View File

@ -1,4 +1,4 @@
/* $NetBSD: view.c,v 1.14 1996/10/10 23:56:37 christos Exp $ */
/* $NetBSD: view.c,v 1.15 1996/10/11 21:12:54 mhitch Exp $ */
/*
* Copyright (c) 1994 Christian E. Hopps
@ -45,6 +45,7 @@
#include <sys/device.h>
#include <sys/malloc.h>
#include <sys/queue.h>
#include <sys/poll.h>
#include <machine/cpu.h>
#include <amiga/dev/grfabs_reg.h>
#include <amiga/dev/viewioctl.h>
@ -412,12 +413,10 @@ viewmmap(dev, off, prot)
/*ARGSUSED*/
int
viewselect(dev, rw, p)
viewpoll(dev, events, p)
dev_t dev;
int rw;
int events;
struct proc *p;
{
if (rw == FREAD)
return(0);
return(1);
return(events & (POLLOUT | POLLWRNORM));
}