Lines Matching defs:de
374 tmpfs_dirent_t *de;
407 error = tmpfs_alloc_dirent(tmp, cnp->cn_nameptr, cnp->cn_namelen, &de);
417 tmpfs_free_dirent(tmp, de);
423 tmpfs_dir_attach(dnode, de, node);
437 tmpfs_dirent_t **de)
454 *de = nde;
462 tmpfs_free_dirent(tmpfs_mount_t *tmp, tmpfs_dirent_t *de)
464 KASSERT(de->td_node == NULL);
465 KASSERT(de->td_seq == TMPFS_DIRSEQ_NONE);
466 tmpfs_strname_free(tmp, de->td_name, de->td_namelen);
467 tmpfs_dirent_put(tmp, de);
480 tmpfs_dir_attach(tmpfs_node_t *dnode, tmpfs_dirent_t *de, tmpfs_node_t *node)
489 KASSERT(de->td_seq == TMPFS_DIRSEQ_NONE);
490 de->td_seq = tmpfs_dir_getseq(dnode, de);
493 de->td_node = node;
498 node->tn_dirent_hint = de;
501 TAILQ_INSERT_TAIL(&dnode->tn_spec.tn_dir.tn_dir, de, td_entries);
530 tmpfs_dir_detach(tmpfs_node_t *dnode, tmpfs_dirent_t *de)
532 tmpfs_node_t *node = de->td_node;
539 de->td_node = NULL;
560 if (dnode->tn_spec.tn_dir.tn_readdir_lastp == de) {
563 TAILQ_REMOVE(&dnode->tn_spec.tn_dir.tn_dir, de, td_entries);
567 tmpfs_dir_putseq(dnode, de);
586 tmpfs_dirent_t *de;
593 TAILQ_FOREACH(de, &node->tn_spec.tn_dir.tn_dir, td_entries) {
594 if (de->td_namelen != nlen)
596 if (memcmp(de->td_name, name, nlen) != 0)
601 return de;
613 tmpfs_dirent_t *de = node->tn_dirent_hint;
617 if (de == NULL) {
620 KASSERT(de->td_node == node);
626 return (node->tn_type != VDIR && node->tn_links > 1) ? NULL : de;
633 tmpfs_dir_getseq(tmpfs_node_t *dnode, tmpfs_dirent_t *de)
635 uint64_t seq = de->td_seq;
658 tmpfs_dir_putseq(tmpfs_node_t *dnode, tmpfs_dirent_t *de)
660 uint64_t seq = de->td_seq;
666 de->td_seq = TMPFS_DIRSEQ_NONE;
683 tmpfs_dirent_t *de = node->tn_spec.tn_dir.tn_readdir_lastp;
690 if (de && de->td_seq == seq) {
691 KASSERT(de->td_seq >= TMPFS_DIRSEQ_START);
692 KASSERT(de->td_seq != TMPFS_DIRSEQ_NONE);
693 return de;
695 TAILQ_FOREACH(de, &node->tn_spec.tn_dir.tn_dir, td_entries) {
696 KASSERT(de->td_seq >= TMPFS_DIRSEQ_START);
697 KASSERT(de->td_seq != TMPFS_DIRSEQ_NONE);
698 if (de->td_seq == seq)
699 return de;
711 tmpfs_dirent_t *de;
724 de = TAILQ_FIRST(&node->tn_spec.tn_dir.tn_dir);
725 next = de ? tmpfs_dir_getseq(node, de) : TMPFS_DIRSEQ_EOF;
756 tmpfs_dirent_t *de, *next_de;
780 de = tmpfs_dir_lookupbyseq(node, uio->uio_offset);
781 if (de == NULL) {
791 dent.d_fileno = de->td_node->tn_id;
792 switch (de->td_node->tn_type) {
817 dent.d_namlen = de->td_namelen;
818 KASSERT(de->td_namelen < sizeof(dent.d_name));
819 memcpy(dent.d_name, de->td_name, de->td_namelen);
820 dent.d_name[de->td_namelen] = '\0';
828 next_de = TAILQ_NEXT(de, td_entries);
845 de = TAILQ_NEXT(de, td_entries);
847 } while (uio->uio_resid > 0 && de);
850 uio->uio_offset = de ? tmpfs_dir_getseq(node, de) : TMPFS_DIRSEQ_EOF;
851 node->tn_spec.tn_dir.tn_readdir_lastp = de;