[BACK]Return to cons.c CVS log [TXT][DIR] Up to [cvs.NetBSD.org] / src / sys / dev

Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.

Diff for /src/sys/dev/cons.c between version 1.40.4.3 and 1.40.4.4

version 1.40.4.3, 2001/09/20 11:15:42 version 1.40.4.4, 2001/09/26 15:28:09
Line 67  cnopen(devvp, mode, flag, p)
Line 67  cnopen(devvp, mode, flag, p)
         struct proc *p;          struct proc *p;
 {  {
         int error;          int error;
         dev_t cndev;          dev_t cndev, rdev;
         struct vnode *vp;          struct vnode *vp;
   
         if (cn_tab == NULL)          if (cn_tab == NULL)
Line 88  cnopen(devvp, mode, flag, p)
Line 88  cnopen(devvp, mode, flag, p)
                  */                   */
                 panic("cnopen: cn_tab->cn_dev == NODEV\n");                  panic("cnopen: cn_tab->cn_dev == NODEV\n");
         }          }
         if (devvp->v_rdev == cndev) {          rdev = vdev_rdev(devvp);
           if (rdev == cndev) {
                 /*                  /*
                  * This causes cnopen() to be called recursively, which                   * This causes cnopen() to be called recursively, which
                  * is generally a bad thing.  It is often caused when                   * is generally a bad thing.  It is often caused when
Line 105  cnopen(devvp, mode, flag, p)
Line 106  cnopen(devvp, mode, flag, p)
                 vn_lock(vp, LK_EXCLUSIVE | LK_RETRY);                  vn_lock(vp, LK_EXCLUSIVE | LK_RETRY);
         } else          } else
                 vget(vp, LK_EXCLUSIVE | LK_RETRY);                  vget(vp, LK_EXCLUSIVE | LK_RETRY);
         devvp->v_devcookie = vp;  
           vdev_setprivdata(devvp, vp);
   
         error = VOP_OPEN(vp, mode, p->p_ucred, p, NULL);          error = VOP_OPEN(vp, mode, p->p_ucred, p, NULL);
         VOP_UNLOCK(vp, 0);          VOP_UNLOCK(vp, 0);
Line 126  cnclose(devvp, flag, mode, p)
Line 128  cnclose(devvp, flag, mode, p)
         if (cn_tab == NULL)          if (cn_tab == NULL)
                 return (0);                  return (0);
   
         vp = devvp->v_devcookie;          vp = vdev_privdata(devvp);
   
         vn_lock(vp, LK_EXCLUSIVE | LK_RETRY);          vn_lock(vp, LK_EXCLUSIVE | LK_RETRY);
         error = VOP_CLOSE(vp, flag, p->p_ucred, p);          error = VOP_CLOSE(vp, flag, p->p_ucred, p);
Line 157  cnread(devvp, uio, flag)
Line 159  cnread(devvp, uio, flag)
         else if (cn_tab == NULL)          else if (cn_tab == NULL)
                 return ENXIO;                  return ENXIO;
   
         vp = devvp->v_devcookie;          vp = vdev_privdata(devvp);
   
         vn_lock(vp, LK_EXCLUSIVE | LK_RETRY);          vn_lock(vp, LK_EXCLUSIVE | LK_RETRY);
         error = VOP_READ(vp, uio, flag, p->p_ucred);          error = VOP_READ(vp, uio, flag, p->p_ucred);
         VOP_UNLOCK(vp, 0);          VOP_UNLOCK(vp, 0);
Line 184  cnwrite(devvp, uio, flag)
Line 187  cnwrite(devvp, uio, flag)
         else if (cn_tab == NULL)          else if (cn_tab == NULL)
                 return ENXIO;                  return ENXIO;
         else          else
                 vp = devvp->v_devcookie;                  vp = vdev_privdata(devvp);
   
         vn_lock(vp, LK_EXCLUSIVE | LK_RETRY);          vn_lock(vp, LK_EXCLUSIVE | LK_RETRY);
         error = VOP_WRITE(vp, uio, flag, p->p_ucred);          error = VOP_WRITE(vp, uio, flag, p->p_ucred);
         VOP_UNLOCK(vp, 0);          VOP_UNLOCK(vp, 0);
Line 233  cnioctl(devvp, cmd, data, flag, p)
Line 237  cnioctl(devvp, cmd, data, flag, p)
         else if (cn_tab == NULL)          else if (cn_tab == NULL)
                 return ENXIO;                  return ENXIO;
         else          else
                 vp = devvp->v_devcookie;                  vp = vdev_privdata(devvp);
   
         return VOP_IOCTL(vp, cmd, data, flag, p->p_ucred, p);          return VOP_IOCTL(vp, cmd, data, flag, p->p_ucred, p);
 }  }
Line 257  cnpoll(devvp, events, p)
Line 261  cnpoll(devvp, events, p)
         else if (cn_tab == NULL)          else if (cn_tab == NULL)
                 return ENXIO;                  return ENXIO;
         else          else
                 vp = devvp->v_devcookie;                  vp = vdev_privdata(devvp);
   
         return VOP_POLL(vp, events, p);          return VOP_POLL(vp, events, p);
 }  }

Legend:
Removed from v.1.40.4.3  
changed lines
  Added in v.1.40.4.4

CVSweb <webmaster@jp.NetBSD.org>