Lines Matching refs:cdp

83 	struct cdev_priv *cdp;
93 TAILQ_FOREACH(cdp, &cdevp_list, cdp_list)
94 if (cdp->cdp_inode == ud) {
95 dev = &cdp->cdp_c;
120 struct cdev_priv *cdp;
124 cdp = malloc(sizeof *cdp, M_CDEVP, M_ZERO |
126 if (cdp == NULL)
129 cdp->cdp_dirents = &cdp->cdp_dirent0;
131 cdev = &cdp->cdp_c;
142 struct cdev_priv *cdp;
146 TAILQ_FOREACH(cdp, &cdevp_list, cdp_list) {
147 if ((cdp->cdp_flags & CDP_ACTIVE) == 0)
149 if (devfs_pathpath(cdp->cdp_c.si_name, name) != 0)
151 if (devfs_pathpath(name, cdp->cdp_c.si_name) != 0)
163 struct cdev_priv *cdp;
165 cdp = cdev2priv(cdev);
168 devfs_free_cdp_inode(cdp->cdp_inode);
169 if (cdp->cdp_maxdirent > 0)
170 free(cdp->cdp_dirents, M_DEVFS2);
171 free(cdp, M_CDEVP);
468 devfs_metoo(struct cdev_priv *cdp, struct devfs_mount *dm)
476 if (dm->dm_idx <= cdp->cdp_maxdirent) {
482 memcpy(dep, cdp->cdp_dirents, (cdp->cdp_maxdirent + 1) * sizeof *dep);
483 if (cdp->cdp_maxdirent > 0)
484 free(cdp->cdp_dirents, M_DEVFS2);
485 cdp->cdp_dirents = dep;
490 cdp->cdp_maxdirent = dm->dm_idx;
500 struct cdev_priv *cdp;
509 TAILQ_FOREACH(cdp, &cdevp_list, cdp_list) {
511 KASSERT(cdp->cdp_dirents != NULL, ("NULL cdp_dirents"));
517 if ((cleanup || !(cdp->cdp_flags & CDP_ACTIVE)) &&
518 dm->dm_idx <= cdp->cdp_maxdirent &&
519 cdp->cdp_dirents[dm->dm_idx] != NULL) {
520 de = cdp->cdp_dirents[dm->dm_idx];
521 cdp->cdp_dirents[dm->dm_idx] = NULL;
522 KASSERT(cdp == de->de_cdp,
524 cdp->cdp_c.si_name, cdp, de->de_cdp));
533 cdp->cdp_inuse--;
540 if (!(cdp->cdp_flags & CDP_ACTIVE)) {
541 if (cdp->cdp_inuse > 0)
543 TAILQ_REMOVE(&cdevp_list, cdp, cdp_list);
545 dev_rel(&cdp->cdp_c);
553 KASSERT((cdp->cdp_flags & CDP_ACTIVE), ("Bogons, I tell ya'!"));
555 if (dm->dm_idx <= cdp->cdp_maxdirent &&
556 cdp->cdp_dirents[dm->dm_idx] != NULL) {
557 de = cdp->cdp_dirents[dm->dm_idx];
558 KASSERT(cdp == de->de_cdp, ("inconsistent cdp"));
563 cdp->cdp_inuse++;
566 if (dm->dm_idx > cdp->cdp_maxdirent)
567 devfs_metoo(cdp, dm);
570 s = cdp->cdp_c.si_name;
590 __func__, cdp->cdp_c.si_name));
599 if (cdp->cdp_c.si_flags & SI_ALIAS) {
604 pdev = cdp->cdp_c.si_parent;
617 de->de_uid = cdp->cdp_c.si_uid;
618 de->de_gid = cdp->cdp_c.si_gid;
619 de->de_mode = cdp->cdp_c.si_mode;
623 de->de_inode = cdp->cdp_inode;
624 de->de_cdp = cdp;
626 mac_devfs_create_device(cdp->cdp_c.si_cred, dm->dm_mount,
627 &cdp->cdp_c, de);
633 /* XXX: could check that cdp is still active here */
634 KASSERT(cdp->cdp_dirents[dm->dm_idx] == NULL,
636 cdp->cdp_dirents[dm->dm_idx] = de;
685 struct cdev_priv *cdp;
688 cdp = cdev2priv(dev);
689 cdp->cdp_flags |= CDP_ACTIVE;
690 cdp->cdp_inode = alloc_unrl(devfs_inos);
692 TAILQ_INSERT_TAIL(&cdevp_list, cdp, cdp_list);
699 struct cdev_priv *cdp;
702 cdp = cdev2priv(dev);
703 cdp->cdp_flags &= ~CDP_ACTIVE;