Lines Matching defs:tfo
57 #define tmpfs_lock_file(tfo) \
58 (tmpfs_lock_object((struct tmpfs_object_s *)tfo))
61 #define tmpfs_unlock_file(tfo) \
62 (tmpfs_unlock_object((struct tmpfs_object_s *)tfo))
79 static void tmpfs_release_lockedfile(struct tmpfs_file_s *tfo);
90 struct tmpfs_file_s **tfo);
103 struct tmpfs_file_s **tfo,
325 static void tmpfs_release_lockedfile(struct tmpfs_file_s *tfo)
327 DEBUGASSERT(tfo && tfo->tfo_refs > 0);
333 if (tfo->tfo_refs == 1 && (tfo->tfo_flags & TFO_FLAG_UNLINKED) != 0)
335 sem_destroy(&tfo->tfo_exclsem.ts_sem);
336 kmm_free(tfo->tfo_data);
337 kmm_free(tfo);
344 if(tfo->tfo_refs > 0)
346 tfo->tfo_refs--;
348 tmpfs_unlock_file(tfo);
473 struct tmpfs_file_s *tfo;
479 tfo = (struct tmpfs_file_s *)kmm_malloc(allocsize);
480 if (tfo == NULL)
489 tfo->tfo_atime = tmpfs_timestamp();
490 tfo->tfo_mtime = tfo->tfo_atime;
491 tfo->tfo_ctime = tfo->tfo_atime;
492 tfo->tfo_type = TMPFS_REGULAR;
493 tfo->tfo_refs = 1;
494 tfo->tfo_flags = 0;
495 tfo->tfo_size = 0;
496 tfo->tfo_data = NULL;
498 tfo->tfo_exclsem.ts_holder = getpid();
499 tfo->tfo_exclsem.ts_count = 1;
500 if (sem_init(&tfo->tfo_exclsem.ts_sem, 0, 0) != 0)
503 kmm_free(tfo);
507 return tfo;
517 struct tmpfs_file_s **tfo)
594 *tfo = newtfo;
907 struct tmpfs_file_s **tfo,
942 *tfo = (struct tmpfs_file_s *)to;
998 struct tmpfs_file_s *tfo;
1003 tfo = (struct tmpfs_file_s *)(filep->f_vnode->data);
1004 if (tfo == NULL)
1010 tmpfs_lock_file(tfo);
1014 if (tfo->tfo_refs > 0)
1016 tfo->tfo_refs--;
1023 if (tfo->tfo_refs == 0 && (tfo->tfo_flags & TFO_FLAG_UNLINKED) != 0)
1030 (void)sem_destroy(&tfo->tfo_exclsem.ts_sem);
1031 kmm_free(tfo->tfo_data);
1032 kmm_free(tfo);
1038 tmpfs_unlock_file(tfo);
1048 struct tmpfs_file_s *tfo;
1057 tfo = (struct tmpfs_file_s *)(filep->f_vnode->data);
1058 if (tfo == NULL)
1062 if (filep->f_pos >= tfo->tfo_size || buflen == 0)
1069 tmpfs_lock_file(tfo);
1077 if (endpos > tfo->tfo_size)
1079 endpos = tfo->tfo_size;
1085 if (LOS_CopyFromKernel(buffer, buflen, &tfo->tfo_data[startpos], nread) != 0)
1087 tmpfs_unlock_file(tfo);
1094 tfo->tfo_atime = tmpfs_timestamp();
1098 tmpfs_unlock_file(tfo);
1108 struct tmpfs_file_s *tfo;
1117 tfo = (struct tmpfs_file_s *)(vnode->data);
1118 if (tfo == NULL)
1122 if (off >= tfo->tfo_size)
1129 tmpfs_lock_file(tfo);
1137 if (endpos > tfo->tfo_size)
1139 endpos = tfo->tfo_size;
1145 if (LOS_CopyFromKernel(buffer, PAGE_SIZE, &tfo->tfo_data[startpos], nread) != 0)
1147 tmpfs_unlock_file(tfo);
1153 tfo->tfo_atime = tmpfs_timestamp();
1157 tmpfs_unlock_file(tfo);
1169 struct tmpfs_file_s *tfo;
1192 ret = tmpfs_create_file(fs, path, parent_tdo, &tfo);
1201 tmpfs_unlock_file(tfo);
1207 vp->data = tfo;
1210 tfo->mode = mode;
1211 vp->mode = tfo->mode;
1212 vp->gid = tfo->gid;
1213 vp->uid = tfo->uid;
1215 ret = VfsHashInsert(vp, (uint32_t)tfo);
1218 tmpfs_unlock_file(tfo);
1249 struct tmpfs_file_s *tfo;
1265 tfo = (struct tmpfs_file_s *)(filep->f_vnode->data);
1266 if (tfo == NULL)
1272 tmpfs_lock_file(tfo);
1286 if (endpos > tfo->tfo_size)
1297 if (tfo->tfo_size)
1299 ret = memcpy_s(data, startpos + alloc, tfo->tfo_data, tfo->tfo_size);
1306 free(tfo->tfo_data);
1308 if (startpos > tfo->tfo_size)
1310 (void)memset_s(data + tfo->tfo_size, startpos + alloc - tfo->tfo_size, 0, startpos - tfo->tfo_size);
1313 tfo->tfo_data = data;
1314 tfo->tfo_size = startpos + alloc;
1318 if (LOS_CopyToKernel(&tfo->tfo_data[startpos], nwritten, buffer, nwritten) != 0)
1327 tfo->tfo_ctime = tfo->tfo_mtime = tmpfs_timestamp();
1331 tmpfs_unlock_file(tfo);
1335 tmpfs_unlock_file(tfo);
1345 struct tmpfs_file_s *tfo;
1352 tfo = (struct tmpfs_file_s *)(filep->f_vnode->data);
1353 if (tfo == NULL)
1372 position = offset + tfo->tfo_size;
1649 struct tmpfs_file_s *tfo = NULL;
1651 tfo = vp->data;
1652 tfo->tfo_size = 0;
1654 if (tfo->tfo_data)
1656 free(tfo->tfo_data);
1911 struct tmpfs_file_s *tfo = NULL;
1948 ret = tmpfs_find_file(fs, relpath, &tfo, &parent_dir);
1956 tfo = (struct tmpfs_file_s *)node->data;
1959 if (tfo == NULL || parent_dir == NULL)
1964 DEBUGASSERT(tfo != NULL);
1966 tmpfs_lock_file(tfo);
1969 ret = tmpfs_remove_dirent(parent_dir, (struct tmpfs_object_s *)tfo);
1979 if (tfo->tfo_refs > 1)
1983 tfo->tfo_flags |= TFO_FLAG_UNLINKED;
1987 tfo->tfo_refs--;
1988 tmpfs_unlock_file(tfo);
1995 sem_destroy(&tfo->tfo_exclsem.ts_sem);
1996 kmm_free(tfo->tfo_data);
1997 kmm_free(tfo);
2013 tmpfs_release_lockedfile(tfo);
2207 struct tmpfs_file_s *tfo;
2346 tfo = (struct tmpfs_file_s *)new_to;
2351 tfo->tfo_flags |= TFO_FLAG_UNLINKED;
2358 (void)sem_destroy(&tfo->tfo_exclsem.ts_sem);
2359 kmm_free(tfo->tfo_data);
2360 kmm_free(tfo);
2426 struct tmpfs_file_s *tfo =
2432 buf->st_nlink = tfo->tfo_refs - 1;
2436 objsize = tfo->tfo_size;