Esempio n. 1
0
File: npty.c Progetto: aunali1/exopc
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;

}
Esempio n. 2
0
/*
 * 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*/
}