Lines Matching full:cdp

86 	struct cdev_priv *cdp;  in sysctl_devname()  local
106 TAILQ_FOREACH(cdp, &cdevp_list, cdp_list) in sysctl_devname()
107 if (cdp->cdp_inode == ud) { in sysctl_devname()
108 dev = &cdp->cdp_c; in sysctl_devname()
133 struct cdev_priv *cdp; in devfs_alloc() local
137 cdp = malloc(sizeof *cdp, M_CDEVP, M_ZERO | in devfs_alloc()
139 if (cdp == NULL) in devfs_alloc()
142 mtx_init(&cdp->cdp_threadlock, "devthrd", NULL, MTX_DEF); in devfs_alloc()
144 cdp->cdp_dirents = &cdp->cdp_dirent0; in devfs_alloc()
146 cdev = &cdp->cdp_c; in devfs_alloc()
157 struct cdev_priv *cdp; in devfs_dev_exists() local
161 TAILQ_FOREACH(cdp, &cdevp_list, cdp_list) { in devfs_dev_exists()
162 if ((cdp->cdp_flags & CDP_ACTIVE) == 0) in devfs_dev_exists()
164 if (devfs_pathpath(cdp->cdp_c.si_name, name) != 0) in devfs_dev_exists()
166 if (devfs_pathpath(name, cdp->cdp_c.si_name) != 0) in devfs_dev_exists()
178 struct cdev_priv *cdp; in devfs_free() local
180 cdp = cdev2priv(cdev); in devfs_free()
181 KASSERT((cdp->cdp_flags & (CDP_ACTIVE | CDP_ON_ACTIVE_LIST)) == 0, in devfs_free()
182 ("%s: cdp %p (%s) still on active list", in devfs_free()
183 __func__, cdp, cdev->si_name)); in devfs_free()
186 devfs_free_cdp_inode(cdp->cdp_inode); in devfs_free()
187 if (cdp->cdp_maxdirent > 0) in devfs_free()
188 free(cdp->cdp_dirents, M_DEVFS2); in devfs_free()
189 mtx_destroy(&cdp->cdp_threadlock); in devfs_free()
190 free(cdp, M_CDEVP); in devfs_free()
482 devfs_metoo(struct cdev_priv *cdp, struct devfs_mount *dm) in devfs_metoo() argument
490 if (dm->dm_idx <= cdp->cdp_maxdirent) { in devfs_metoo()
496 memcpy(dep, cdp->cdp_dirents, (cdp->cdp_maxdirent + 1) * sizeof *dep); in devfs_metoo()
497 olddep = cdp->cdp_maxdirent > 0 ? cdp->cdp_dirents : NULL; in devfs_metoo()
498 cdp->cdp_dirents = dep; in devfs_metoo()
503 cdp->cdp_maxdirent = dm->dm_idx; in devfs_metoo()
514 struct cdev_priv *cdp; in devfs_populate_loop() local
523 TAILQ_FOREACH(cdp, &cdevp_list, cdp_list) { in devfs_populate_loop()
524 KASSERT(cdp->cdp_dirents != NULL, ("NULL cdp_dirents")); in devfs_populate_loop()
525 KASSERT((cdp->cdp_flags & CDP_ON_ACTIVE_LIST) != 0, in devfs_populate_loop()
526 ("%s: cdp %p (%s) should not be on active list", in devfs_populate_loop()
527 __func__, cdp, cdp->cdp_c.si_name)); in devfs_populate_loop()
533 if ((cleanup || !(cdp->cdp_flags & CDP_ACTIVE)) && in devfs_populate_loop()
534 dm->dm_idx <= cdp->cdp_maxdirent && in devfs_populate_loop()
535 cdp->cdp_dirents[dm->dm_idx] != NULL) { in devfs_populate_loop()
536 de = cdp->cdp_dirents[dm->dm_idx]; in devfs_populate_loop()
537 cdp->cdp_dirents[dm->dm_idx] = NULL; in devfs_populate_loop()
538 KASSERT(cdp == de->de_cdp, in devfs_populate_loop()
540 cdp->cdp_c.si_name, cdp, de->de_cdp)); in devfs_populate_loop()
549 cdp->cdp_inuse--; in devfs_populate_loop()
556 if (!(cdp->cdp_flags & CDP_ACTIVE)) { in devfs_populate_loop()
557 if (cdp->cdp_inuse > 0) in devfs_populate_loop()
559 cdp->cdp_flags &= ~CDP_ON_ACTIVE_LIST; in devfs_populate_loop()
560 TAILQ_REMOVE(&cdevp_list, cdp, cdp_list); in devfs_populate_loop()
562 dev_rel(&cdp->cdp_c); in devfs_populate_loop()
570 KASSERT((cdp->cdp_flags & CDP_ACTIVE), ("Bogons, I tell ya'!")); in devfs_populate_loop()
572 if (dm->dm_idx <= cdp->cdp_maxdirent && in devfs_populate_loop()
573 cdp->cdp_dirents[dm->dm_idx] != NULL) { in devfs_populate_loop()
574 de = cdp->cdp_dirents[dm->dm_idx]; in devfs_populate_loop()
575 KASSERT(cdp == de->de_cdp, ("inconsistent cdp")); in devfs_populate_loop()
579 cdp->cdp_inuse++; in devfs_populate_loop()
582 if (dm->dm_idx > cdp->cdp_maxdirent) in devfs_populate_loop()
583 devfs_metoo(cdp, dm); in devfs_populate_loop()
586 s = cdp->cdp_c.si_name; in devfs_populate_loop()
606 __func__, cdp->cdp_c.si_name)); in devfs_populate_loop()
614 if (cdp->cdp_c.si_flags & SI_ALIAS) { in devfs_populate_loop()
619 pdev = cdp->cdp_c.si_parent; in devfs_populate_loop()
632 de->de_uid = cdp->cdp_c.si_uid; in devfs_populate_loop()
633 de->de_gid = cdp->cdp_c.si_gid; in devfs_populate_loop()
634 de->de_mode = cdp->cdp_c.si_mode; in devfs_populate_loop()
638 de->de_inode = cdp->cdp_inode; in devfs_populate_loop()
639 de->de_cdp = cdp; in devfs_populate_loop()
641 mac_devfs_create_device(cdp->cdp_c.si_cred, dm->dm_mount, in devfs_populate_loop()
642 &cdp->cdp_c, de); in devfs_populate_loop()
648 /* XXX: could check that cdp is still active here */ in devfs_populate_loop()
649 KASSERT(cdp->cdp_dirents[dm->dm_idx] == NULL, in devfs_populate_loop()
651 cdp->cdp_dirents[dm->dm_idx] = de; in devfs_populate_loop()
707 struct cdev_priv *cdp; in devfs_create() local
710 cdp = cdev2priv(dev); in devfs_create()
711 KASSERT((cdp->cdp_flags & CDP_ON_ACTIVE_LIST) == 0, in devfs_create()
712 ("%s: cdp %p (%s) already on active list", in devfs_create()
713 __func__, cdp, dev->si_name)); in devfs_create()
714 cdp->cdp_flags |= (CDP_ACTIVE | CDP_ON_ACTIVE_LIST); in devfs_create()
715 cdp->cdp_inode = alloc_unrl(devfs_inos); in devfs_create()
717 TAILQ_INSERT_TAIL(&cdevp_list, cdp, cdp_list); in devfs_create()
724 struct cdev_priv *cdp; in devfs_destroy() local
727 cdp = cdev2priv(dev); in devfs_destroy()
728 cdp->cdp_flags &= ~CDP_ACTIVE; in devfs_destroy()