Lines Matching refs:tdo
59 #define tmpfs_lock_directory(tdo) \
60 (tmpfs_lock_object((struct tmpfs_object_s *)tdo))
63 #define tmpfs_unlock_directory(tdo) \
64 (tmpfs_unlock_object((struct tmpfs_object_s *)tdo))
80 static struct tmpfs_dirent_s *tmpfs_find_dirent(struct tmpfs_directory_s *tdo,
82 static int tmpfs_remove_dirent(struct tmpfs_directory_s *tdo,
84 static int tmpfs_add_dirent(struct tmpfs_directory_s **tdo,
96 struct tmpfs_directory_s **tdo);
107 struct tmpfs_directory_s **tdo,
356 static struct tmpfs_dirent_s *tmpfs_find_dirent(struct tmpfs_directory_s *tdo,
364 for (node = tdo->tdo_entry.pstNext; node != &tdo->tdo_entry; node = node->pstNext)
382 static int tmpfs_remove_dirent(struct tmpfs_directory_s *tdo,
403 if (tdo->tdo_count == 0)
413 if(tdo->tdo_nentries > 0)
415 tdo->tdo_nentries--;
424 static int tmpfs_add_dirent(struct tmpfs_directory_s **tdo,
456 parent = *tdo;
621 struct tmpfs_directory_s *tdo;
625 tdo = (struct tmpfs_directory_s *)kmm_malloc(allocsize);
626 if (tdo == NULL)
633 tdo->tdo_atime = tmpfs_timestamp();
634 tdo->tdo_mtime = tdo->tdo_mtime;
635 tdo->tdo_ctime = tdo->tdo_mtime;
636 tdo->tdo_type = TMPFS_DIRECTORY;
637 tdo->tdo_refs = 0;
638 tdo->tdo_nentries = 0;
639 tdo->tdo_count = 0;
640 LOS_ListInit(&tdo->tdo_entry);
642 tdo->tdo_exclsem.ts_holder = TMPFS_NO_HOLDER;
643 tdo->tdo_exclsem.ts_count = 0;
644 if (sem_init(&tdo->tdo_exclsem.ts_sem, 0, 1) != 0)
647 kmm_free(tdo);
650 return tdo;
660 struct tmpfs_directory_s **tdo)
741 if (tdo != NULL)
743 *tdo = newtdo;
777 struct tmpfs_directory_s *tdo = NULL;
796 tdo = next_tdo;
810 tdo = next_tdo;
816 tde = tmpfs_find_dirent(tdo, segment);
850 * exit the loop, tdo will still refer to the parent
870 if (tdo != NULL)
876 tmpfs_lock_directory(tdo);
877 tdo->tdo_refs++;
880 *parent = tdo;
931 struct tmpfs_directory_s *tdo = *parent;
933 tdo->tdo_refs--;
934 tmpfs_unlock_directory(tdo);
954 struct tmpfs_directory_s **tdo,
986 *tdo = (struct tmpfs_directory_s *)to;
1421 struct tmpfs_directory_s *tdo;
1451 tdo = (struct tmpfs_directory_s *)vp->data;
1455 tdo = (struct tmpfs_directory_s *)fs->tfs_root.tde_object;
1458 if (tdo == NULL)
1464 tmpfs_lock_directory(tdo);
1465 tmp->tf_tdo = tdo;
1468 tdo->tdo_count++;
1469 tdo->tdo_refs++;
1470 tmpfs_unlock_directory(tdo);
1484 struct tmpfs_directory_s *tdo;
1496 tdo = tmp->tf_tdo;
1497 DEBUGASSERT(tdo != NULL);
1501 tmpfs_lock_directory(tdo);
1502 if (tdo->tdo_count == 1)
1504 LOS_DL_LIST *node = tdo->tdo_entry.pstNext;
1506 while (node != &tdo->tdo_entry)
1517 if (tdo->tdo_refs > 0)
1519 tdo->tdo_refs--;
1521 if (tdo->tdo_count > 0)
1523 tdo->tdo_count--;
1525 tmpfs_unlock_directory(tdo);
1538 struct tmpfs_directory_s *tdo;
1555 tdo = tmp->tf_tdo;
1556 if (tdo == NULL)
1561 tmpfs_lock_directory(tdo);
1566 node = tdo->tdo_entry.pstNext;
1567 while (node != &tdo->tdo_entry && index != 0)
1573 while (node != &tdo->tdo_entry)
1584 if (node == &tdo->tdo_entry)
1626 tmpfs_unlock_directory(tdo);
1669 struct tmpfs_directory_s *tdo;
1685 tdo = tmpfs_alloc_directory();
1686 if (tdo == NULL)
1692 fs->tfs_root.tde_object = (struct tmpfs_object_s *)tdo;
1697 tdo->tdo_dirent = &fs->tfs_root;
1717 tdo->mode = mnt->vnodeBeCovered->mode;
1718 tdo->gid = mnt->vnodeBeCovered->gid;
1719 tdo->uid = mnt->vnodeBeCovered->uid;
1724 vp->mode = tdo->mode;
1725 vp->gid = tdo->gid;
1726 vp->uid = tdo->uid;
1743 struct tmpfs_directory_s *tdo;
1752 tdo = (struct tmpfs_directory_s *)fs->tfs_root.tde_object;
1753 if (tdo == NULL)
1759 if (tdo->tdo_nentries > 0 || tdo->tdo_refs > 1)
1767 sem_destroy(&tdo->tdo_exclsem.ts_sem);
1768 kmm_free(tdo);
2035 struct tmpfs_directory_s *tdo;
2060 ret = tmpfs_create_directory(fs, relpath, parent_tdo, &tdo);
2072 tdo->mode = mode;
2076 vp->data = tdo;
2079 vp->mode = tdo->mode;
2080 vp->gid = tdo->gid;
2081 vp->uid = tdo->uid;
2083 ret = VfsHashInsert(vp, (uint32_t)tdo);
2099 struct tmpfs_directory_s *tdo;
2124 ret = tmpfs_find_directory(fs, dirname, &tdo, &parent_dir);
2132 tdo = (struct tmpfs_directory_s *)target->data;
2135 if (tdo == NULL || tdo->tdo_type != TMPFS_DIRECTORY)
2148 if (tdo->tdo_nentries > 0 || tdo->tdo_refs > 1)
2154 ret = tmpfs_remove_dirent(parent_dir, (struct tmpfs_object_s *)tdo);
2162 sem_destroy(&tdo->tdo_exclsem.ts_sem);
2163 kmm_free(tdo);
2179 if (tdo->tdo_refs > 0)
2181 tdo->tdo_refs--;
2183 tmpfs_unlock_directory(tdo);
2206 struct tmpfs_directory_s *tdo;
2301 tdo = (struct tmpfs_directory_s *)new_to;
2302 if (tdo->tdo_nentries != 0)
2440 struct tmpfs_directory_s *tdo =
2446 buf->st_nlink = tdo->tdo_nentries + tdo->tdo_refs;