Home | History | Annotate | Download | only in tmpfs

Lines Matching defs:de

373 	tmpfs_dirent_t *de, *wde;
392 error = tmpfs_alloc_dirent(tmp, cnp->cn_nameptr, cnp->cn_namelen, &de);
404 tmpfs_free_dirent(tmp, de);
413 tmpfs_free_dirent(tmp, de);
433 tmpfs_dir_attach(dnode, de, node);
454 tmpfs_dirent_t **de)
472 *de = nde;
480 tmpfs_free_dirent(tmpfs_mount_t *tmp, tmpfs_dirent_t *de)
482 KASSERT(de->td_node == NULL);
483 KASSERT(de->td_seq == TMPFS_DIRSEQ_NONE);
484 tmpfs_strname_free(tmp, de->td_name, de->td_namelen);
485 tmpfs_dirent_put(tmp, de);
498 tmpfs_dir_attach(tmpfs_node_t *dnode, tmpfs_dirent_t *de, tmpfs_node_t *node)
507 KASSERT(de->td_seq == TMPFS_DIRSEQ_NONE);
508 de->td_seq = tmpfs_dir_getseq(dnode, de);
511 de->td_node = node;
517 node->tn_dirent_hint = de;
524 TAILQ_INSERT_TAIL(&dnode->tn_spec.tn_dir.tn_dir, de, td_entries);
554 tmpfs_dir_detach(tmpfs_node_t *dnode, tmpfs_dirent_t *de)
556 tmpfs_node_t *node = de->td_node;
577 de->td_node = NULL;
580 if (dnode->tn_spec.tn_dir.tn_readdir_lastp == de) {
583 TAILQ_REMOVE(&dnode->tn_spec.tn_dir.tn_dir, de, td_entries);
586 tmpfs_dir_putseq(dnode, de);
604 tmpfs_dirent_t *de;
611 TAILQ_FOREACH(de, &node->tn_spec.tn_dir.tn_dir, td_entries) {
612 if (de->td_namelen != nlen)
614 if (memcmp(de->td_name, name, nlen) != 0)
618 return de;
630 tmpfs_dirent_t *de = node->tn_dirent_hint;
634 if (de == NULL) {
637 KASSERT(de->td_node == node);
643 return (node->tn_type != VDIR && node->tn_links > 1) ? NULL : de;
652 tmpfs_dir_getseq(tmpfs_node_t *dnode, tmpfs_dirent_t *de)
654 uint32_t seq = de->td_seq;
706 tmpfs_dir_putseq(tmpfs_node_t *dnode, tmpfs_dirent_t *de)
709 uint32_t seq = de->td_seq;
715 KASSERT(de->td_seq >= TMPFS_DIRSEQ_START);
723 de->td_seq = TMPFS_DIRSEQ_NONE;
739 tmpfs_dirent_t *de = node->tn_spec.tn_dir.tn_readdir_lastp;
746 if (de && de->td_seq == seq) {
747 KASSERT(de->td_seq >= TMPFS_DIRSEQ_START);
748 KASSERT(de->td_seq != TMPFS_DIRSEQ_NONE);
749 return de;
751 TAILQ_FOREACH(de, &node->tn_spec.tn_dir.tn_dir, td_entries) {
752 KASSERT(de->td_seq >= TMPFS_DIRSEQ_START);
753 KASSERT(de->td_seq != TMPFS_DIRSEQ_NONE);
754 if (de->td_seq == seq)
755 return de;
767 tmpfs_dirent_t *de;
780 de = TAILQ_FIRST(&node->tn_spec.tn_dir.tn_dir);
781 next = de ? tmpfs_dir_getseq(node, de) : TMPFS_DIRSEQ_EOF;
810 tmpfs_dirent_t *de;
842 de = tmpfs_dir_lookupbyseq(node, uio->uio_offset);
843 if (de == NULL) {
853 if (de->td_node == TMPFS_NODE_WHITEOUT) {
857 dent.d_fileno = de->td_node->tn_id;
858 dent.d_type = vtype2dt(de->td_node->tn_type);
860 dent.d_namlen = de->td_namelen;
861 KASSERT(de->td_namelen < sizeof(dent.d_name));
862 memcpy(dent.d_name, de->td_name, de->td_namelen);
863 dent.d_name[de->td_namelen] = '\0';
878 de = TAILQ_NEXT(de, td_entries);
880 } while (uio->uio_resid > 0 && de);
883 uio->uio_offset = de ? tmpfs_dir_getseq(node, de) : TMPFS_DIRSEQ_EOF;
884 node->tn_spec.tn_dir.tn_readdir_lastp = de;