Lines Matching refs:dnp
279 devnode_t * dnp = NULL; in dev_finddir() local
332 dnp = dirent_p->de_dnp; in dev_finddir()
333 if (dnp->dn_type != DEV_DIR) { in dev_finddir()
347 dnp = dirent_p->de_dnp; in dev_finddir()
352 dnp, fullpath); in dev_finddir()
356 dirnode = dnp; /* continue relative to this directory */ in dev_finddir()
373 devnode_t * dnp, devdirent_t * *dirent_pp) in dev_add_name() argument
401 if (dirnode && (dnp->dn_dvm == NULL)) { in dev_add_name()
402 dnp->dn_dvm = dirnode->dn_dvm; in dev_add_name()
411 dirent_p->de_dnp = dnp; in dev_add_name()
412 dnp->dn_links++; /* implicit from our own name-node */ in dev_add_name()
418 if (dnp->dn_linklist) { in dev_add_name()
419 dirent_p->de_nextlink = dnp->dn_linklist; in dev_add_name()
427 dnp->dn_linklist = dirent_p; in dev_add_name()
434 if (dnp->dn_type == DEV_DIR) { in dev_add_name()
435 dnp->dn_typeinfo.Dir.myname = dirent_p; in dev_add_name()
442 if (dnp->dn_typeinfo.Dir.parent) { in dev_add_name()
443 dnp->dn_typeinfo.Dir.parent->dn_links--; in dev_add_name()
446 dnp->dn_typeinfo.Dir.parent = dirnode; in dev_add_name()
448 dnp->dn_typeinfo.Dir.parent = dnp; in dev_add_name()
450 dnp->dn_typeinfo.Dir.parent->dn_links++; /* account for the new '..' */ in dev_add_name()
503 devnode_t * dnp = NULL; in dev_add_node() local
512 dnp = proto->dn_nextsibling; in dev_add_node()
513 while (dnp != proto) { in dev_add_node()
514 if (dnp->dn_dvm == dvm) { in dev_add_node()
515 *dn_pp = dnp; in dev_add_node()
518 dnp = dnp->dn_nextsibling; in dev_add_node()
534 dnp = kalloc_type(devnode_t, Z_WAITOK | Z_ZERO | Z_NOFAIL); in dev_add_node()
541 bcopy(proto, dnp, sizeof(devnode_t)); in dev_add_node()
542 dnp->dn_links = 0; in dev_add_node()
543 dnp->dn_linklist = NULL; in dev_add_node()
544 dnp->dn_vn = NULL; in dev_add_node()
545 dnp->dn_len = 0; in dev_add_node()
547 dnp->dn_prevsiblingp = proto->dn_prevsiblingp; in dev_add_node()
548 *(dnp->dn_prevsiblingp) = dnp; in dev_add_node()
549 dnp->dn_nextsibling = proto; in dev_add_node()
550 proto->dn_prevsiblingp = &(dnp->dn_nextsibling); in dev_add_node()
552 mac_devfs_label_init(dnp); in dev_add_node()
553 mac_devfs_label_copy(mac_devfs_label(proto), mac_devfs_label(dnp)); in dev_add_node()
562 dnp->dn_type = entrytype; in dev_add_node()
563 dnp->dn_nextsibling = dnp; in dev_add_node()
564 dnp->dn_prevsiblingp = &(dnp->dn_nextsibling); in dev_add_node()
565 dnp->dn_atime.tv_sec = tv.tv_sec; in dev_add_node()
566 dnp->dn_mtime.tv_sec = tv.tv_sec; in dev_add_node()
567 dnp->dn_ctime.tv_sec = tv.tv_sec; in dev_add_node()
569 mac_devfs_label_init(dnp); in dev_add_node()
572 dnp->dn_dvm = dvm; in dev_add_node()
575 os_ref_init_raw(&dnp->dn_refcount, &devfs_refgrp); in dev_add_node()
576 dnp->dn_ino = devfs_unique_fileno; in dev_add_node()
588 dnp->dn_typeinfo.Dir.dirlast = &(dnp->dn_typeinfo.Dir.dirlist); in dev_add_node()
589 dnp->dn_typeinfo.Dir.dirlist = (devdirent_t *)0; in dev_add_node()
590 dnp->dn_typeinfo.Dir.entrycount = 0; in dev_add_node()
592 dnp->dn_typeinfo.Dir.parent = NULL; in dev_add_node()
593 dnp->dn_links++; /* for .*/ in dev_add_node()
594 dnp->dn_typeinfo.Dir.myname = NULL; in dev_add_node()
599 dnp->dn_ops = &devfs_vnodeop_p; in dev_add_node()
600 dnp->dn_mode |= 0555; /* default perms */ in dev_add_node()
611 dnp->dn_typeinfo.Slnk.name = kalloc_data(typeinfo->Slnk.namelen + 1, Z_WAITOK); in dev_add_node()
612 if (!dnp->dn_typeinfo.Slnk.name) { in dev_add_node()
616 strlcpy(dnp->dn_typeinfo.Slnk.name, typeinfo->Slnk.name, in dev_add_node()
618 dnp->dn_typeinfo.Slnk.namelen = typeinfo->Slnk.namelen; in dev_add_node()
619 DEVFS_INCR_STRINGSPACE(dnp->dn_typeinfo.Slnk.namelen + 1); in dev_add_node()
620 dnp->dn_ops = &devfs_vnodeop_p; in dev_add_node()
621 dnp->dn_mode |= 0555; /* default perms */ in dev_add_node()
629 dnp->dn_ops = &devfs_spec_vnodeop_p; in dev_add_node()
630 dnp->dn_typeinfo.dev = typeinfo->dev; in dev_add_node()
636 dnp->dn_ops = &devfs_devfd_vnodeop_p; in dev_add_node()
637 dnp->dn_mode |= 0555; /* default perms */ in dev_add_node()
646 kfree_type(devnode_t, dnp); in dev_add_node()
648 *dn_pp = dnp; in dev_add_node()
660 devnode_free(devnode_t * dnp) in devnode_free() argument
663 mac_devfs_label_destroy(dnp); in devnode_free()
665 if (dnp->dn_type == DEV_SLNK) { in devnode_free()
666 DEVFS_DECR_STRINGSPACE(dnp->dn_typeinfo.Slnk.namelen + 1); in devnode_free()
667 kfree_data(dnp->dn_typeinfo.Slnk.name, dnp->dn_typeinfo.Slnk.namelen + 1); in devnode_free()
670 kfree_type(devnode_t, dnp); in devnode_free()
678 devfs_dn_free(devnode_t * dnp) in devfs_dn_free() argument
680 if (--dnp->dn_links <= 0) { /* can be -1 for initial free, on error */ in devfs_dn_free()
682 if (dnp->dn_nextsibling != dnp) { in devfs_dn_free()
683 devnode_t * * prevp = dnp->dn_prevsiblingp; in devfs_dn_free()
684 *prevp = dnp->dn_nextsibling; in devfs_dn_free()
685 dnp->dn_nextsibling->dn_prevsiblingp = prevp; in devfs_dn_free()
689 os_ref_count_t rc = os_ref_get_count_raw(&dnp->dn_refcount); in devfs_dn_free()
692 (void) os_ref_release_locked_raw(&dnp->dn_refcount, &devfs_refgrp); in devfs_dn_free()
693 devnode_free(dnp); in devfs_dn_free()
695 dnp->dn_lflags |= DN_DELETE; in devfs_dn_free()
724 devnode_t * dnp = child->de_dnp; in devfs_propogate() local
730 events = (dnp->dn_type == DEV_DIR ? VNODE_EVENT_DIR_CREATED : VNODE_EVENT_FILE_CREATED); in devfs_propogate()
747 NULL, dnp, adnp->dn_dvm, in devfs_propogate()
771 remove_notify_count(devnode_t *dnp) in remove_notify_count() argument
781 notify_count += dnp->dn_links; in remove_notify_count()
782 for (dnp2 = dnp->dn_nextsibling; dnp2 != dnp; dnp2 = dnp2->dn_nextsibling) { in remove_notify_count()
802 devnode_t * dnp = ((devdirent_t *)dirent_p)->de_dnp; in devfs_remove() local
818 log_count = remove_notify_count(dnp); in devfs_remove()
830 new_count = remove_notify_count(dnp); in devfs_remove()
846 devfs_record_event(&event_log, dnp, VNODE_EVENT_DELETE); in devfs_remove()
850 while ((dnp2 = dnp->dn_nextsibling) != dnp) { in devfs_remove()
854 dnp->dn_nextsibling = dnp2->dn_nextsibling; in devfs_remove()
855 dnp->dn_nextsibling->dn_prevsiblingp = &(dnp->dn_nextsibling); in devfs_remove()
881 if (dnp->dn_linklist) { in devfs_remove()
883 lastlink = (1 == dnp->dn_links); in devfs_remove()
886 devfs_record_event(&event_log, dnp->dn_linklist->de_parent, VNODE_EVENT_FILE_REMOVED); in devfs_remove()
888 dev_free_name(dnp->dn_linklist); in devfs_remove()
969 devnode_t * dnp = back->de_dnp; in dev_dup_entry() local
970 int type = dnp->dn_type; in dev_dup_entry()
976 error = dev_add_entry(back->de_name, parent, type, NULL, dnp, in dev_dup_entry()
1027 devnode_t * dnp = dirent_p->de_dnp; in dev_free_name() local
1029 if (dnp) { in dev_free_name()
1030 if (dnp->dn_type == DEV_DIR) { in dev_free_name()
1033 if (dnp->dn_typeinfo.Dir.dirlist) { in dev_free_name()
1036 p = dnp->dn_typeinfo.Dir.parent; in dev_free_name()
1037 devfs_dn_free(dnp); /* account for '.' */ in dev_free_name()
1047 dnp->dn_linklist = NULL; in dev_free_name()
1049 if (dnp->dn_linklist == dirent_p) { in dev_free_name()
1050 dnp->dn_linklist = dirent_p->de_nextlink; in dev_free_name()
1053 devfs_dn_free(dnp); in dev_free_name()
1092 devnode_t * dnp = dirent_p->de_dnp; in dev_free_hier() local
1094 if (dnp) { in dev_free_hier()
1095 if (dnp->dn_type == DEV_DIR) { in dev_free_hier()
1096 while (dnp->dn_typeinfo.Dir.dirlist) { in dev_free_hier()
1097 dev_free_hier(dnp->dn_typeinfo.Dir.dirlist); in dev_free_hier()
1098 dev_free_name(dnp->dn_typeinfo.Dir.dirlist); in dev_free_hier()
1116 devfs_dntovn(devnode_t * dnp, struct vnode **vn_pp, __unused struct proc * p) in devfs_dntovn() argument
1133 if (dnp->dn_lflags & DN_DELETE) { in devfs_dntovn()
1137 devfs_ref_node(dnp); in devfs_dntovn()
1141 vn_p = dnp->dn_vn; in devfs_dntovn()
1165 if (dnp->dn_lflags & DN_DELETE) { in devfs_dntovn()
1222 if (dnp->dn_lflags & DN_CREATE) { in devfs_dntovn()
1223 dnp->dn_lflags |= DN_CREATEWAIT; in devfs_dntovn()
1224 msleep(&dnp->dn_lflags, &devfs_mutex, PRIBIO, 0, 0); in devfs_dntovn()
1228 dnp->dn_lflags |= DN_CREATE; in devfs_dntovn()
1230 switch (dnp->dn_type) { in devfs_dntovn()
1235 if (dnp->dn_typeinfo.Dir.parent == dnp) { in devfs_dntovn()
1242 vtype = (dnp->dn_type == DEV_BDEV) ? VBLK : VCHR; in devfs_dntovn()
1250 vfsp.vnfs_mp = dnp->dn_dvm->mount; in devfs_dntovn()
1254 vfsp.vnfs_fsnode = dnp; in devfs_dntovn()
1256 vfsp.vnfs_vops = *(dnp->dn_ops); in devfs_dntovn()
1264 if (dnp->dn_clone != NULL) { in devfs_dntovn()
1265 int n_major = major(dnp->dn_typeinfo.dev); in devfs_dntovn()
1267 n_minor = (*dnp->dn_clone)(dnp->dn_typeinfo.dev, DEVFS_CLONE_ALLOC); in devfs_dntovn()
1275 vfsp.vnfs_rdev = dnp->dn_typeinfo.dev; in devfs_dntovn()
1301 if ((dnp->dn_clone != NULL) && (dnp->dn_vn != NULLVP)) { in devfs_dntovn()
1313 devfs_ref_node(dnp); in devfs_dntovn()
1319 if (dnp->dn_clone == NULL) { in devfs_dntovn()
1320 dnp->dn_vn = vn_p; in devfs_dntovn()
1332 (void)(*dnp->dn_clone)(dnp->dn_typeinfo.dev, DEVFS_CLONE_FREE); in devfs_dntovn()
1335 dnp->dn_lflags &= ~DN_CREATE; in devfs_dntovn()
1336 if (dnp->dn_lflags & DN_CREATEWAIT) { in devfs_dntovn()
1337 dnp->dn_lflags &= ~DN_CREATEWAIT; in devfs_dntovn()
1338 wakeup(&dnp->dn_lflags); in devfs_dntovn()
1347 devfs_rele_node(dnp); in devfs_dntovn()
1357 devfs_ref_node(devnode_t *dnp) in devfs_ref_node() argument
1359 os_ref_retain_locked_raw(&dnp->dn_refcount, &devfs_refgrp); in devfs_ref_node()
1367 devfs_rele_node(devnode_t *dnp) in devfs_rele_node() argument
1369 os_ref_count_t rc = os_ref_release_locked_raw(&dnp->dn_refcount, &devfs_refgrp); in devfs_rele_node()
1372 } else if ((rc == 1) && (dnp->dn_lflags & DN_DELETE)) { in devfs_rele_node()
1374 (void) os_ref_release_locked_raw(&dnp->dn_refcount, &devfs_refgrp); in devfs_rele_node()
1375 devnode_free(dnp); in devfs_rele_node()
1389 devnode_t * dnp; in dev_add_entry() local
1392 if ((error = dev_add_node(type, typeinfo, proto, &dnp, in dev_add_entry()
1398 if ((error = dev_add_name(name, parent, NULL, dnp, nm_pp)) != 0) { in dev_add_entry()
1399 devfs_dn_free(dnp); /* 1->0 for dir, 0->(-1) for other */ in dev_add_entry()
1421 devfs_record_event(devfs_event_log_t delp, devnode_t *dnp, uint32_t events) in devfs_record_event() argument
1428 if (dnp->dn_vn != NULLVP && vnode_ismonitored(dnp->dn_vn)) { in devfs_record_event()
1430 dvep->dve_vp = dnp->dn_vn; in devfs_record_event()
1431 dvep->dve_vid = vnode_vid(dnp->dn_vn); in devfs_record_event()
1561 devnode_t * dnp; in devfs_make_node_internal() local
1628 if (dev_finddir(path, NULL, DEVFS_CREATE, &dnp, &event_log) == 0) { in devfs_make_node_internal()
1630 if (dev_add_entry(name, dnp, type, &typeinfo, NULL, NULL, &new_dev) == 0) { in devfs_make_node_internal()
1638 devfs_propogate(dnp->dn_typeinfo.Dir.myname, new_dev, &event_log); in devfs_make_node_internal()