• Home
  • Raw
  • Download

Lines Matching refs:File

71   EFI_OPEN_FILE     File;  member
104 IN EFI_OPEN_FILE *File in FileHandleValid() argument
110 GuardFile = BASE_CR (File, EFI_OPEN_FILE_GUARD, File); in FileHandleValid()
371 IN OUT EFI_OPEN_FILE *File, in EblFileDevicePath() argument
402 if (File->EfiHandle != NULL) { in EblFileDevicePath()
403 File->DevicePath = DevicePathFromHandle (File->EfiHandle); in EblFileDevicePath()
406 File->DevicePath = AppendDevicePath (File->DevicePath, FileDevicePath); in EblFileDevicePath()
410 Status = gBS->HandleProtocol (File->EfiHandle, &gEfiBlockIoProtocolGuid, (VOID **)&BlkIo); in EblFileDevicePath()
412 File->FsBlockIoMedia = BlkIo->Media; in EblFileDevicePath()
413 File->FsBlockIo = BlkIo; in EblFileDevicePath()
416 File->MaxPosition = MultU64x32 (BlkIo->Media->LastBlock + 1, BlkIo->Media->BlockSize); in EblFileDevicePath()
419 if (File->Type == EfiOpenFileSystem) { in EblFileDevicePath()
420 Status = gBS->HandleProtocol (File->EfiHandle, &gEfiSimpleFileSystemProtocolGuid, (VOID **)&Fs); in EblFileDevicePath()
426 Status = Root->GetInfo (Root, &gEfiFileSystemInfoGuid, &Size, File->FsInfo); in EblFileDevicePath()
428 File->FsInfo = AllocatePool (Size); in EblFileDevicePath()
429 Status = Root->GetInfo (Root, &gEfiFileSystemInfoGuid, &Size, File->FsInfo); in EblFileDevicePath()
433 Status = Root->Open (Root, &File->FsFileHandle, UnicodeFileName, OpenMode, 0); in EblFileDevicePath()
436 Status = File->FsFileHandle->GetInfo (File->FsFileHandle, &gEfiFileInfoGuid, &Size, NULL); in EblFileDevicePath()
438 File->FsFileInfo = AllocatePool (Size); in EblFileDevicePath()
439 …Status = File->FsFileHandle->GetInfo (File->FsFileHandle, &gEfiFileInfoGuid, &Size, File->FsFileIn… in EblFileDevicePath()
441 File->Size = (UINTN)File->FsFileInfo->FileSize; in EblFileDevicePath()
442 File->MaxPosition = (UINT64)File->Size; in EblFileDevicePath()
450 } else if (File->Type == EfiOpenBlockIo) { in EblFileDevicePath()
451 File->Size = (UINTN)File->MaxPosition; in EblFileDevicePath()
508 IN OUT EFI_OPEN_FILE *File, in EblFvFileDevicePath() argument
530 …Status = gBS->HandleProtocol (File->EfiHandle, &gEfiFirmwareVolume2ProtocolGuid, (VOID **)&File->F… in EblFvFileDevicePath()
536 …Status = gBS->HandleProtocol (File->EfiHandle, &gEfiFirmwareVolumeBlockProtocolGuid, (VOID **)&Fvb… in EblFvFileDevicePath()
538 Status = Fvb->GetPhysicalAddress (Fvb, &File->FvStart); in EblFvFileDevicePath()
540 FvHeader = (EFI_FIRMWARE_VOLUME_HEADER *)(UINTN)File->FvStart; in EblFvFileDevicePath()
541 File->FvHeaderSize = sizeof (EFI_FIRMWARE_VOLUME_HEADER); in EblFvFileDevicePath()
543 File->FvHeaderSize += sizeof (EFI_FV_BLOCK_MAP_ENTRY); in EblFvFileDevicePath()
546 …for (Lba = 0, File->FvSize = 0, NumberOfBlocks = 0; ; File->FvSize += (BlockSize * NumberOfBlocks)… in EblFvFileDevicePath()
556 DevicePath = DevicePathFromHandle (File->EfiHandle); in EblFvFileDevicePath()
559 File->DevicePath = DuplicateDevicePath (DevicePath); in EblFvFileDevicePath()
560 File->Size = File->FvSize; in EblFvFileDevicePath()
561 File->MaxPosition = File->Size; in EblFvFileDevicePath()
565 File->FvType = EFI_FV_FILETYPE_ALL; in EblFvFileDevicePath()
566 GetNextFileStatus = File->Fv->GetNextFile ( in EblFvFileDevicePath()
567 File->Fv, in EblFvFileDevicePath()
569 &File->FvType, in EblFvFileDevicePath()
570 &File->FvNameGuid, in EblFvFileDevicePath()
571 &File->FvAttributes, in EblFvFileDevicePath()
572 &File->Size in EblFvFileDevicePath()
576 Status = CompareGuidToString (&File->FvNameGuid, FileName); in EblFvFileDevicePath()
582 Status = File->Fv->ReadSection ( in EblFvFileDevicePath()
583 File->Fv, in EblFvFileDevicePath()
584 &File->FvNameGuid, in EblFvFileDevicePath()
609 File->Size = 0; in EblFvFileDevicePath()
610 Status = File->Fv->ReadSection ( in EblFvFileDevicePath()
611 File->Fv, in EblFvFileDevicePath()
612 &File->FvNameGuid, in EblFvFileDevicePath()
616 &File->Size, in EblFvFileDevicePath()
624 File->MaxPosition = File->Size; in EblFvFileDevicePath()
625 EfiInitializeFwVolDevicepathNode (&DevicePathNode, &File->FvNameGuid); in EblFvFileDevicePath()
626File->DevicePath = AppendDevicePathNode (DevicePath, (EFI_DEVICE_PATH_PROTOCOL *)&DevicePathNode); in EblFvFileDevicePath()
664 EFI_OPEN_FILE *File; in EfiOpen() local
680 File = &FileData; in EfiOpen()
681 ZeroMem (File, sizeof (EFI_OPEN_FILE)); in EfiOpen()
739 File = EfiOpen (CwdPlusPathName, OpenMode, SectionType); in EfiOpen()
741 return File; in EfiOpen()
747 File->DeviceName = AllocatePool (StrLen); in EfiOpen()
748 AsciiStrCpy (File->DeviceName, PathName); in EfiOpen()
749 File->DeviceName[FileStart - 1] = '\0'; in EfiOpen()
750 File->FileName = &File->DeviceName[FileStart]; in EfiOpen()
751 if (File->FileName[0] == '\0') { in EfiOpen()
753 File->FileName = "\\"; in EfiOpen()
767 File->Type = EfiOpenFileSystem; in EfiOpen()
768 File->EfiHandle = mFs[DevNumber]; in EfiOpen()
769 Status = EblFileDevicePath (File, &PathName[FileStart], OpenMode); in EfiOpen()
775 File->Type = EfiOpenFirmwareVolume; in EfiOpen()
776 File->EfiHandle = mFv[DevNumber]; in EfiOpen()
793 File->FvSectionType = ModifiedSectionType; in EfiOpen()
794 Status = EblFvFileDevicePath (File, &PathName[FileStart], ModifiedSectionType); in EfiOpen()
798 File->Type = EfiOpenMemoryBuffer; in EfiOpen()
800 File->Buffer = (VOID *)AsciiStrHexToUintn (&PathName[FileStart]); in EfiOpen()
809 File->Size = 0; in EfiOpen()
811 File->Size = AsciiStrHexToUintn (&PathName[FileStart + 1]); in EfiOpen()
816 if (File->Size == 0) { in EfiOpen()
817 File->Size = (UINTN)(0 - (UINTN)File->Buffer); in EfiOpen()
820 File->MaxPosition = File->Size; in EfiOpen()
821 File->BaseOffset = (UINTN)File->Buffer; in EfiOpen()
827 File->Type = EfiOpenLoadFile; in EfiOpen()
828 File->EfiHandle = mLoadFile[DevNumber]; in EfiOpen()
830 …Status = gBS->HandleProtocol (File->EfiHandle, &gEfiLoadFileProtocolGuid, (VOID **)&File->LoadFile… in EfiOpen()
835 … Status = gBS->HandleProtocol (File->EfiHandle, &gEfiDevicePathProtocolGuid, (VOID **)&DevicePath); in EfiOpen()
839 File->DevicePath = DuplicateDevicePath (DevicePath); in EfiOpen()
846 File->Type = EfiOpenBlockIo; in EfiOpen()
847 File->EfiHandle = mBlkIo[DevNumber]; in EfiOpen()
848 EblFileDevicePath (File, "", OpenMode); in EfiOpen()
851 File->DiskOffset = AsciiStrHexToUintn (&PathName[FileStart]); in EfiOpen()
868 File->Size = File->Size - File->DiskOffset; in EfiOpen()
870 File->Size = Size; in EfiOpen()
873 File->MaxPosition = File->Size; in EfiOpen()
874 File->BaseOffset = File->DiskOffset; in EfiOpen()
886 File->Type = EfiOpenTftp; in EfiOpen()
887 File->IsDirty = FALSE; in EfiOpen()
888 File->IsBufferValid = FALSE; in EfiOpen()
890 Status = ConvertIpStringToEfiIp (PathName, &File->ServerIp); in EfiOpen()
903 CopyMem (&(GuardFile->File), &FileData, sizeof (EFI_OPEN_FILE)); in EfiOpen()
906 return &(GuardFile->File); in EfiOpen()
909 FreePool (File->DeviceName); in EfiOpen()
1063 IN EFI_OPEN_FILE *File in EfiClose() argument
1069 if (!FileHandleValid (File)) { in EfiClose()
1074 if ((File->Type == EfiOpenTftp) && (File->IsDirty)) { in EfiClose()
1076 TftpBufferSize = File->Size; in EfiClose()
1079 File->Buffer, in EfiClose()
1083 &File->ServerIp, in EfiClose()
1084 (UINT8 *)File->FileName, in EfiClose()
1094 if ((File->Type == EfiOpenLoadFile) || in EfiClose()
1095 ((File->Type == EfiOpenTftp) && (File->IsBufferValid == TRUE)) || in EfiClose()
1096 ((File->Type == EfiOpenFirmwareVolume) && (File->IsBufferValid == TRUE))) { in EfiClose()
1097 EblFreePool(File->Buffer); in EfiClose()
1100 EblFreePool (File->DevicePath); in EfiClose()
1101 EblFreePool (File->DeviceName); in EfiClose()
1102 EblFreePool (File->FsFileInfo); in EfiClose()
1103 EblFreePool (File->FsInfo); in EfiClose()
1105 if (File->FsFileHandle != NULL) { in EfiClose()
1106 File->FsFileHandle->Close (File->FsFileHandle); in EfiClose()
1110 EblFreePool (BASE_CR (File, EFI_OPEN_FILE_GUARD, File)); in EfiClose()
1127 IN EFI_OPEN_FILE *File, in EfiTell() argument
1134 if (!FileHandleValid (File)) { in EfiTell()
1139 *CurrentPosition = File->CurrentPosition; in EfiTell()
1142 if (File->Type == EfiOpenLoadFile) { in EfiTell()
1144 File->Buffer = NULL; in EfiTell()
1145 File->Size = 0; in EfiTell()
1146 …Status = File->LoadFile->LoadFile (File->LoadFile, File->DevicePath, FALSE, &File->Size, File->Buf… in EfiTell()
1151 File->MaxPosition = (UINT64)File->Size; in EfiTell()
1152 } else if (File->Type == EfiOpenTftp) { in EfiTell()
1160 &File->ServerIp, in EfiTell()
1161 (UINT8 *)File->FileName, in EfiTell()
1170 File->Size = (UINTN)BufferSize; in EfiTell()
1171 File->MaxPosition = File->Size; in EfiTell()
1174 return File->Size; in EfiTell()
1201 IN EFI_OPEN_FILE *File, in EfiSeek() argument
1209 if (!FileHandleValid (File)) { in EfiSeek()
1213 if (File->Type == EfiOpenLoadFile) { in EfiSeek()
1218 CurrentPosition = File->CurrentPosition; in EfiSeek()
1221 if (Offset > File->MaxPosition) { in EfiSeek()
1228 if ((File->CurrentPosition + Offset) > File->MaxPosition) { in EfiSeek()
1239 CurrentPosition = File->MaxPosition; in EfiSeek()
1247 if (File->FsFileHandle != NULL) { in EfiSeek()
1248 Status = File->FsFileHandle->SetPosition (File->FsFileHandle, CurrentPosition); in EfiSeek()
1252 File->CurrentPosition = CurrentPosition; in EfiSeek()
1260 IN OUT EFI_OPEN_FILE *File in CacheTftpFile() argument
1266 if (File->IsBufferValid) { in CacheTftpFile()
1271 EfiTell (File, NULL); in CacheTftpFile()
1274 File->Buffer = AllocatePool(File->Size); in CacheTftpFile()
1275 if (File->Buffer == NULL) { in CacheTftpFile()
1279 TftpBufferSize = File->Size; in CacheTftpFile()
1283 File->Buffer, in CacheTftpFile()
1287 &File->ServerIp, in CacheTftpFile()
1288 (UINT8 *)File->FileName, in CacheTftpFile()
1293 FreePool(File->Buffer); in CacheTftpFile()
1298 File->IsBufferValid = TRUE; in CacheTftpFile()
1321 IN EFI_OPEN_FILE *File, in EfiRead() argument
1330 if (!FileHandleValid (File)) { in EfiRead()
1335 if ((File->CurrentPosition + *BufferSize) > File->MaxPosition) { in EfiRead()
1339 switch (File->Type) { in EfiRead()
1342 EfiTell (File, NULL); in EfiRead()
1344 Status = File->LoadFile->LoadFile (File->LoadFile, File->DevicePath, FALSE, BufferSize, Buffer); in EfiRead()
1348 if (CompareGuid (&File->FvNameGuid, &gZeroGuid)) { in EfiRead()
1350 CopyMem (Buffer, (VOID *)(UINTN)(File->FvStart + File->CurrentPosition), *BufferSize); in EfiRead()
1351 File->CurrentPosition += *BufferSize; in EfiRead()
1354 if (File->Buffer == NULL) { in EfiRead()
1355 if (File->FvSectionType == EFI_SECTION_ALL) { in EfiRead()
1356 Status = File->Fv->ReadFile ( in EfiRead()
1357 File->Fv, in EfiRead()
1358 &File->FvNameGuid, in EfiRead()
1359 (VOID **)&File->Buffer, in EfiRead()
1360 &File->Size, in EfiRead()
1361 &File->FvType, in EfiRead()
1362 &File->FvAttributes, in EfiRead()
1366 Status = File->Fv->ReadSection ( in EfiRead()
1367 File->Fv, in EfiRead()
1368 &File->FvNameGuid, in EfiRead()
1369 File->FvSectionType, in EfiRead()
1371 (VOID **)&File->Buffer, in EfiRead()
1372 &File->Size, in EfiRead()
1379 File->IsBufferValid = TRUE; in EfiRead()
1382 CopyMem (Buffer, File->Buffer + File->CurrentPosition, *BufferSize); in EfiRead()
1383 File->CurrentPosition += *BufferSize; in EfiRead()
1389 CopyMem (Buffer, File->Buffer + File->CurrentPosition, *BufferSize); in EfiRead()
1390 File->CurrentPosition += *BufferSize; in EfiRead()
1395 Status = File->FsFileHandle->Read (File->FsFileHandle, BufferSize, Buffer); in EfiRead()
1396 File->CurrentPosition += *BufferSize; in EfiRead()
1400 Status = gBS->HandleProtocol(File->EfiHandle, &gEfiDiskIoProtocolGuid, (VOID **)&DiskIo); in EfiRead()
1402 …Status = DiskIo->ReadDisk(DiskIo, File->FsBlockIoMedia->MediaId, File->DiskOffset + File->CurrentP… in EfiRead()
1404 File->CurrentPosition += *BufferSize; in EfiRead()
1409 if (File->IsBufferValid == FALSE) { in EfiRead()
1410 Status = CacheTftpFile (File); in EfiRead()
1417 CopyMem (Buffer, File->Buffer + File->CurrentPosition, *BufferSize); in EfiRead()
1418 File->CurrentPosition += *BufferSize; in EfiRead()
1452 IN EFI_OPEN_FILE *File, in EfiReadAllocatePool() argument
1457 if (!FileHandleValid (File)) { in EfiReadAllocatePool()
1462 EfiTell (File, NULL); in EfiReadAllocatePool()
1464 *BufferSize = File->Size; in EfiReadAllocatePool()
1470 return EfiRead (File, *Buffer, BufferSize); in EfiReadAllocatePool()
1491 IN EFI_OPEN_FILE *File, in EfiWrite() argument
1500 if (!FileHandleValid (File)) { in EfiWrite()
1504 switch (File->Type) { in EfiWrite()
1506 if ((File->CurrentPosition + *BufferSize) > File->MaxPosition) { in EfiWrite()
1510 CopyMem (File->Buffer + File->CurrentPosition, Buffer, *BufferSize); in EfiWrite()
1511 File->CurrentPosition += *BufferSize; in EfiWrite()
1519 if (File->FvSectionType != EFI_SECTION_ALL) { in EfiWrite()
1524 FileData.NameGuid = &(File->FvNameGuid); in EfiWrite()
1525 FileData.Type = File->FvType; in EfiWrite()
1526 FileData.FileAttributes = File->FvAttributes; in EfiWrite()
1529 Status = File->Fv->WriteFile (File->Fv, 1, EFI_FV_UNRELIABLE_WRITE, &FileData); in EfiWrite()
1533 Status = File->FsFileHandle->Write (File->FsFileHandle, BufferSize, Buffer); in EfiWrite()
1534 File->CurrentPosition += *BufferSize; in EfiWrite()
1538 if ((File->CurrentPosition + *BufferSize) > File->MaxPosition) { in EfiWrite()
1542 Status = gBS->HandleProtocol (File->EfiHandle, &gEfiDiskIoProtocolGuid, (VOID **)&DiskIo); in EfiWrite()
1544 …Status = DiskIo->WriteDisk (DiskIo, File->FsBlockIoMedia->MediaId, File->DiskOffset + File->Curren… in EfiWrite()
1546 File->CurrentPosition += *BufferSize; in EfiWrite()
1551 if (File->IsBufferValid == FALSE) { in EfiWrite()
1552 Status = CacheTftpFile(File); in EfiWrite()
1559 if ((File->CurrentPosition + *BufferSize) > File->MaxPosition) { in EfiWrite()
1562 TempBuffer = File->Buffer; in EfiWrite()
1564 File->Buffer = AllocatePool ((UINTN)(File->CurrentPosition + *BufferSize)); in EfiWrite()
1565 if (File->Buffer == NULL) { in EfiWrite()
1569 CopyMem (File->Buffer, TempBuffer, File->Size); in EfiWrite()
1573 File->Size = (UINTN)(File->CurrentPosition + *BufferSize); in EfiWrite()
1574 File->MaxPosition = (UINT64)File->Size; in EfiWrite()
1578 CopyMem (File->Buffer + File->CurrentPosition, Buffer, *BufferSize); in EfiWrite()
1579 File->CurrentPosition += *BufferSize; in EfiWrite()
1582 File->IsDirty = TRUE; in EfiWrite()
1688 EFI_OPEN_FILE *File; in EfiSetCwd() local
1721 File = EfiOpen (Path, EFI_FILE_MODE_READ, 0); in EfiSetCwd()
1722 if (File == NULL) { in EfiSetCwd()
1732 gCwd = AllocatePool (AsciiStrSize (File->DeviceName) + AsciiStrSize (File->FileName) + 10); in EfiSetCwd()
1737 AsciiStrCpy (gCwd, File->DeviceName); in EfiSetCwd()
1738 if (File->FileName == NULL) { in EfiSetCwd()
1742 AsciiStrCat (gCwd, File->FileName); in EfiSetCwd()
1746 EfiClose (File); in EfiSetCwd()