31 CHAR8 *CanonicalPathname;
34 VirtioFs = VIRTIO_FS_FROM_SIMPLE_FS (This);
37 if (VirtioFsFile ==
NULL) {
38 return EFI_OUT_OF_RESOURCES;
42 if (CanonicalPathname ==
NULL) {
43 Status = EFI_OUT_OF_RESOURCES;
44 goto FreeVirtioFsFile;
52 VIRTIO_FS_FUSE_ROOT_DIR_NODE_ID,
55 if (EFI_ERROR (Status)) {
56 goto FreeCanonicalPathname;
62 VirtioFsFile->Signature = VIRTIO_FS_FILE_SIG;
63 VirtioFsFile->SimpleFile.
Revision = EFI_FILE_PROTOCOL_REVISION;
64 VirtioFsFile->SimpleFile.Open = VirtioFsSimpleFileOpen;
65 VirtioFsFile->SimpleFile.Close = VirtioFsSimpleFileClose;
66 VirtioFsFile->SimpleFile.Delete = VirtioFsSimpleFileDelete;
67 VirtioFsFile->SimpleFile.Read = VirtioFsSimpleFileRead;
68 VirtioFsFile->SimpleFile.Write = VirtioFsSimpleFileWrite;
69 VirtioFsFile->SimpleFile.GetPosition = VirtioFsSimpleFileGetPosition;
70 VirtioFsFile->SimpleFile.SetPosition = VirtioFsSimpleFileSetPosition;
71 VirtioFsFile->SimpleFile.GetInfo = VirtioFsSimpleFileGetInfo;
72 VirtioFsFile->SimpleFile.SetInfo = VirtioFsSimpleFileSetInfo;
73 VirtioFsFile->SimpleFile.Flush = VirtioFsSimpleFileFlush;
74 VirtioFsFile->IsDirectory =
TRUE;
75 VirtioFsFile->IsOpenForWriting =
FALSE;
76 VirtioFsFile->OwnerFs = VirtioFs;
77 VirtioFsFile->CanonicalPathname = CanonicalPathname;
78 VirtioFsFile->FilePosition = 0;
79 VirtioFsFile->NodeId = VIRTIO_FS_FUSE_ROOT_DIR_NODE_ID;
80 VirtioFsFile->FuseHandle = RootDirHandle;
81 VirtioFsFile->FileInfoArray =
NULL;
82 VirtioFsFile->SingleFileInfoSize = 0;
83 VirtioFsFile->NumFileInfo = 0;
84 VirtioFsFile->NextFileInfo = 0;
89 InsertTailList (&VirtioFs->OpenFiles, &VirtioFsFile->OpenFilesEntry);
91 *Root = &VirtioFsFile->SimpleFile;
LIST_ENTRY *EFIAPI InsertTailList(IN OUT LIST_ENTRY *ListHead, IN OUT LIST_ENTRY *Entry)
VOID EFIAPI FreePool(IN VOID *Buffer)
VOID *EFIAPI AllocateCopyPool(IN UINTN AllocationSize, IN CONST VOID *Buffer)
EFI_STATUS VirtioFsFuseOpenDir(IN OUT VIRTIO_FS *VirtioFs, IN UINT64 NodeId, OUT UINT64 *FuseHandle)
VOID *EFIAPI AllocatePool(IN UINTN AllocationSize)
EFI_STATUS EFIAPI VirtioFsOpenVolume(IN EFI_SIMPLE_FILE_SYSTEM_PROTOCOL *This, OUT EFI_FILE_PROTOCOL **Root)