static int pty_select(struct file *filp,int rw) { int output = 0; if (rw == SELECT_EXCEPT) return 0; lock_pty(minor(filp->f_dev)); k1printf("pty_select: %d\n",__envid); if (filp->f_pos) { switch(rw) { case SELECT_READ: output = (ptcselect(filp->f_dev,SELECT_READ,0)); break; case SELECT_WRITE: output = (ptcselect(filp->f_dev,SELECT_WRITE,0)); break; default: output = (ptcselect(filp->f_dev,SELECT_EXCEPT,0)); break; } } else { switch(rw) { case SELECT_READ: output = (ttselect(filp->f_dev,SELECT_READ,0)); break; case SELECT_WRITE: output = (ttselect(filp->f_dev,SELECT_WRITE,0)); break; default: output = (ttselect(filp->f_dev,SELECT_EXCEPT,0)); break; } } unlock_pty(minor(filp->f_dev)); return output; }
/* * Mouse activity select routine */ qvselect(dev_t dev, rw) { register int s = spl5(); register struct qv_info *qp = qv_scn; if( QVCHAN(minor(dev)) == QVMOUSECHAN ) switch(rw) { case FREAD: /* if events okay */ if(qp->ihead != qp->itail) { splx(s); return(1); } qvrsel = u.u_procp; splx(s); return(0); default: /* can never write */ splx(s); return(0); } else { splx(s); return( ttselect(dev, rw) ); } /*NOTREACHED*/ }