-/*++\r
+/** @file\r
+ Functions that perform file read/write.\r
\r
-Copyright (c) 2005 - 2015, Intel Corporation. All rights reserved.<BR>\r
-This program and the accompanying materials are licensed and made available\r
-under the terms and conditions of the BSD License which accompanies this\r
-distribution. The full text of the license may be found at\r
-http://opensource.org/licenses/bsd-license.php\r
+Copyright (c) 2005 - 2017, Intel Corporation. All rights reserved.<BR>\r
+SPDX-License-Identifier: BSD-2-Clause-Patent\r
\r
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
\r
+**/\r
\r
-Module Name:\r
+#include "Fat.h"\r
\r
- ReadWrite.c\r
+/**\r
\r
-Abstract:\r
+ Get the file's position of the file.\r
\r
- Functions that perform file read/write\r
\r
-Revision History\r
+ @param FHand - The handle of file.\r
+ @param Position - The file's position of the file.\r
\r
---*/\r
-\r
-#include "Fat.h"\r
+ @retval EFI_SUCCESS - Get the info successfully.\r
+ @retval EFI_DEVICE_ERROR - Can not find the OFile for the file.\r
+ @retval EFI_UNSUPPORTED - The open file is not a file.\r
\r
+**/\r
EFI_STATUS\r
EFIAPI\r
FatGetPosition (\r
IN EFI_FILE_PROTOCOL *FHand,\r
OUT UINT64 *Position\r
)\r
-/*++\r
-\r
-Routine Description:\r
-\r
- Get the file's position of the file.\r
-\r
-Arguments:\r
-\r
- FHand - The handle of file.\r
- Position - The file's position of the file.\r
-\r
-Returns:\r
-\r
- EFI_SUCCESS - Get the info successfully.\r
- EFI_DEVICE_ERROR - Can not find the OFile for the file.\r
- EFI_UNSUPPORTED - The open file is not a file.\r
-\r
---*/\r
{\r
FAT_IFILE *IFile;\r
FAT_OFILE *OFile;\r
return EFI_SUCCESS;\r
}\r
\r
+/**\r
+\r
+ Set the file's position of the file.\r
+\r
+ @param FHand - The handle of file.\r
+ @param Position - The file's position of the file.\r
+\r
+ @retval EFI_SUCCESS - Set the info successfully.\r
+ @retval EFI_DEVICE_ERROR - Can not find the OFile for the file.\r
+ @retval EFI_UNSUPPORTED - Set a directory with a not-zero position.\r
+\r
+**/\r
EFI_STATUS\r
EFIAPI\r
FatSetPosition (\r
IN EFI_FILE_PROTOCOL *FHand,\r
IN UINT64 Position\r
)\r
-/*++\r
-\r
-Routine Description:\r
-\r
- Set the file's position of the file.\r
-\r
-Arguments:\r
-\r
- FHand - The handle of file.\r
- Position - The file's position of the file.\r
-\r
-Returns:\r
-\r
- EFI_SUCCESS - Set the info successfully.\r
- EFI_DEVICE_ERROR - Can not find the OFile for the file.\r
- EFI_UNSUPPORTED - Set a directory with a not-zero position.\r
-\r
---*/\r
{\r
FAT_IFILE *IFile;\r
FAT_OFILE *OFile;\r
return EFI_SUCCESS;\r
}\r
\r
+/**\r
+\r
+ Get the file info from the open file of the IFile into Buffer.\r
+\r
+ @param IFile - The instance of the open file.\r
+ @param BufferSize - Size of Buffer.\r
+ @param Buffer - Buffer containing read data.\r
+\r
+ @retval EFI_SUCCESS - Get the file info successfully.\r
+ @retval other - An error occurred when operation the disk.\r
+\r
+**/\r
EFI_STATUS\r
FatIFileReadDir (\r
IN FAT_IFILE *IFile,\r
IN OUT UINTN *BufferSize,\r
OUT VOID *Buffer\r
)\r
-/*++\r
-\r
-Routine Description:\r
-\r
- Get the file info from the open file of the IFile into Buffer.\r
-\r
-Arguments:\r
-\r
- IFile - The instance of the open file.\r
- BufferSize - Size of Buffer.\r
- Buffer - Buffer containing read data.\r
-\r
-Returns:\r
-\r
- EFI_SUCCESS - Get the file info successfully.\r
- other - An error occurred when operation the disk.\r
-\r
---*/\r
{\r
EFI_STATUS Status;\r
FAT_OFILE *OFile;\r
// Update IFile->Position, if everything is all right\r
//\r
CurrentPos = ODir->CurrentPos;\r
- IFile->Position = (UINT64) (CurrentPos * sizeof (FAT_DIRECTORY_ENTRY));\r
+ IFile->Position = CurrentPos * sizeof (FAT_DIRECTORY_ENTRY);\r
}\r
\r
return Status;\r
}\r
\r
+/**\r
+\r
+ Get the file info from the open file of the IFile into Buffer.\r
+\r
+ @param FHand - The file handle to access.\r
+ @param IoMode - Indicate whether the access mode is reading or writing.\r
+ @param BufferSize - Size of Buffer.\r
+ @param Buffer - Buffer containing read data.\r
+ @param Token - A pointer to the token associated with the transaction.\r
+\r
+ @retval EFI_SUCCESS - Get the file info successfully.\r
+ @retval EFI_DEVICE_ERROR - Can not find the OFile for the file.\r
+ @retval EFI_VOLUME_CORRUPTED - The file type of open file is error.\r
+ @retval EFI_WRITE_PROTECTED - The disk is write protect.\r
+ @retval EFI_ACCESS_DENIED - The file is read-only.\r
+ @return other - An error occurred when operating on the disk.\r
+\r
+**/\r
EFI_STATUS\r
FatIFileAccess (\r
IN EFI_FILE_PROTOCOL *FHand,\r
IN OUT VOID *Buffer,\r
IN EFI_FILE_IO_TOKEN *Token\r
)\r
-/*++\r
-\r
-Routine Description:\r
-\r
- Get the file info from the open file of the IFile into Buffer.\r
-\r
-Arguments:\r
-\r
- FHand - The file handle to access.\r
- IoMode - Indicate whether the access mode is reading or writing.\r
- BufferSize - Size of Buffer.\r
- Buffer - Buffer containing read data.\r
- Token - A pointer to the token associated with the transaction.\r
-\r
-Returns:\r
-\r
- EFI_SUCCESS - Get the file info successfully.\r
- EFI_DEVICE_ERROR - Can not find the OFile for the file.\r
- EFI_VOLUME_CORRUPTED - The file type of open file is error.\r
- EFI_WRITE_PROTECTED - The disk is write protect.\r
- EFI_ACCESS_DENIED - The file is read-only.\r
- other - An error occurred when operating on the disk.\r
-\r
---*/\r
{\r
EFI_STATUS Status;\r
FAT_IFILE *IFile;\r
//\r
// Write to a directory is unsupported\r
//\r
- if ((OFile->ODir != NULL) && (IoMode == WRITE_DATA)) {\r
+ if ((OFile->ODir != NULL) && (IoMode == WriteData)) {\r
return EFI_UNSUPPORTED;\r
}\r
\r
return EFI_DEVICE_ERROR;\r
}\r
\r
- if (IoMode == READ_DATA) {\r
+ if (IoMode == ReadData) {\r
//\r
// If position is at EOF, then return device error\r
//\r
//\r
// Read a directory is supported\r
//\r
- ASSERT (IoMode == READ_DATA);\r
+ ASSERT (IoMode == ReadData);\r
Status = FatIFileReadDir (IFile, BufferSize, Buffer);\r
OFile = NULL;\r
} else {\r
//\r
// The position goes beyond the end of file\r
//\r
- if (IoMode == READ_DATA) {\r
+ if (IoMode == ReadData) {\r
//\r
// Adjust the actual size read\r
//\r
return Status;\r
}\r
\r
+/**\r
+\r
+ Get the file info.\r
+\r
+ @param FHand - The handle of the file.\r
+ @param BufferSize - Size of Buffer.\r
+ @param Buffer - Buffer containing read data.\r
+\r
+\r
+ @retval EFI_SUCCESS - Get the file info successfully.\r
+ @retval EFI_DEVICE_ERROR - Can not find the OFile for the file.\r
+ @retval EFI_VOLUME_CORRUPTED - The file type of open file is error.\r
+ @return other - An error occurred when operation the disk.\r
+\r
+**/\r
EFI_STATUS\r
EFIAPI\r
FatRead (\r
IN OUT UINTN *BufferSize,\r
OUT VOID *Buffer\r
)\r
-/*++\r
+{\r
+ return FatIFileAccess (FHand, ReadData, BufferSize, Buffer, NULL);\r
+}\r
\r
-Routine Description:\r
+/**\r
\r
Get the file info.\r
\r
-Arguments:\r
+ @param FHand - The handle of the file.\r
+ @param Token - A pointer to the token associated with the transaction.\r
\r
- FHand - The handle of the file.\r
- BufferSize - Size of Buffer.\r
- Buffer - Buffer containing read data.\r
-\r
-Returns:\r
-\r
- EFI_SUCCESS - Get the file info successfully.\r
- EFI_DEVICE_ERROR - Can not find the OFile for the file.\r
- EFI_VOLUME_CORRUPTED - The file type of open file is error.\r
- other - An error occurred when operation the disk.\r
-\r
---*/\r
-{\r
- return FatIFileAccess (FHand, READ_DATA, BufferSize, Buffer, NULL);\r
-}\r
+ @retval EFI_SUCCESS - Get the file info successfully.\r
+ @retval EFI_DEVICE_ERROR - Can not find the OFile for the file.\r
+ @retval EFI_VOLUME_CORRUPTED - The file type of open file is error.\r
+ @return other - An error occurred when operation the disk.\r
\r
+**/\r
EFI_STATUS\r
EFIAPI\r
FatReadEx (\r
IN EFI_FILE_PROTOCOL *FHand,\r
IN OUT EFI_FILE_IO_TOKEN *Token\r
)\r
-/*++\r
-\r
-Routine Description:\r
-\r
- Get the file info.\r
-\r
-Arguments:\r
+{\r
+ return FatIFileAccess (FHand, ReadData, &Token->BufferSize, Token->Buffer, Token);\r
+}\r
\r
- FHand - The handle of the file.\r
- Token - A pointer to the token associated with the transaction.\r
+/**\r
\r
-Returns:\r
+ Write the content of buffer into files.\r
\r
- EFI_SUCCESS - Get the file info successfully.\r
- EFI_DEVICE_ERROR - Can not find the OFile for the file.\r
- EFI_VOLUME_CORRUPTED - The file type of open file is error.\r
- other - An error occurred when operation the disk.\r
+ @param FHand - The handle of the file.\r
+ @param BufferSize - Size of Buffer.\r
+ @param Buffer - Buffer containing write data.\r
\r
---*/\r
-{\r
- return FatIFileAccess (FHand, READ_DATA, &Token->BufferSize, Token->Buffer, Token);\r
-}\r
+ @retval EFI_SUCCESS - Set the file info successfully.\r
+ @retval EFI_WRITE_PROTECTED - The disk is write protect.\r
+ @retval EFI_ACCESS_DENIED - The file is read-only.\r
+ @retval EFI_DEVICE_ERROR - The OFile is not valid.\r
+ @retval EFI_UNSUPPORTED - The open file is not a file.\r
+ - The writing file size is larger than 4GB.\r
+ @return other - An error occurred when operation the disk.\r
\r
+**/\r
EFI_STATUS\r
EFIAPI\r
FatWrite (\r
IN OUT UINTN *BufferSize,\r
IN VOID *Buffer\r
)\r
-/*++\r
-\r
-Routine Description:\r
-\r
- Write the content of buffer into files.\r
-\r
-Arguments:\r
+{\r
+ return FatIFileAccess (FHand, WriteData, BufferSize, Buffer, NULL);\r
+}\r
\r
- FHand - The handle of the file.\r
- BufferSize - Size of Buffer.\r
- Buffer - Buffer containing write data.\r
+/**\r
\r
-Returns:\r
+ Get the file info.\r
\r
- EFI_SUCCESS - Set the file info successfully.\r
- EFI_WRITE_PROTECTED - The disk is write protect.\r
- EFI_ACCESS_DENIED - The file is read-only.\r
- EFI_DEVICE_ERROR - The OFile is not valid.\r
- EFI_UNSUPPORTED - The open file is not a file.\r
- - The writing file size is larger than 4GB.\r
- other - An error occurred when operation the disk.\r
+ @param FHand - The handle of the file.\r
+ @param Token - A pointer to the token associated with the transaction.\r
\r
---*/\r
-{\r
- return FatIFileAccess (FHand, WRITE_DATA, BufferSize, Buffer, NULL);\r
-}\r
+ @retval EFI_SUCCESS - Get the file info successfully.\r
+ @retval EFI_DEVICE_ERROR - Can not find the OFile for the file.\r
+ @retval EFI_VOLUME_CORRUPTED - The file type of open file is error.\r
+ @return other - An error occurred when operation the disk.\r
\r
+**/\r
EFI_STATUS\r
EFIAPI\r
FatWriteEx (\r
IN EFI_FILE_PROTOCOL *FHand,\r
IN OUT EFI_FILE_IO_TOKEN *Token\r
)\r
-/*++\r
-\r
-Routine Description:\r
-\r
- Get the file info.\r
-\r
-Arguments:\r
+{\r
+ return FatIFileAccess (FHand, WriteData, &Token->BufferSize, Token->Buffer, Token);\r
+}\r
\r
- FHand - The handle of the file.\r
- Token - A pointer to the token associated with the transaction.\r
+/**\r
\r
-Returns:\r
+ This function reads data from a file or writes data to a file.\r
+ It uses OFile->PosRem to determine how much data can be accessed in one time.\r
\r
- EFI_SUCCESS - Get the file info successfully.\r
- EFI_DEVICE_ERROR - Can not find the OFile for the file.\r
- EFI_VOLUME_CORRUPTED - The file type of open file is error.\r
- other - An error occurred when operation the disk.\r
+ @param OFile - The open file.\r
+ @param IoMode - Indicate whether the access mode is reading or writing.\r
+ @param Position - The position where data will be accessed.\r
+ @param DataBufferSize - Size of Buffer.\r
+ @param UserBuffer - Buffer containing data.\r
+ @param Task point to task instance.\r
\r
---*/\r
-{\r
- return FatIFileAccess (FHand, WRITE_DATA, &Token->BufferSize, Token->Buffer, Token);\r
-}\r
+ @retval EFI_SUCCESS - Access the data successfully.\r
+ @return other - An error occurred when operating on the disk.\r
\r
+**/\r
EFI_STATUS\r
FatAccessOFile (\r
IN FAT_OFILE *OFile,\r
IN OUT UINT8 *UserBuffer,\r
IN FAT_TASK *Task\r
)\r
-/*++\r
-\r
-Routine Description:\r
-\r
- This function reads data from a file or writes data to a file.\r
- It uses OFile->PosRem to determine how much data can be accessed in one time.\r
-\r
-Arguments:\r
-\r
- OFile - The open file.\r
- IoMode - Indicate whether the access mode is reading or writing.\r
- Position - The position where data will be accessed.\r
- DataBufferSize - Size of Buffer.\r
- UserBuffer - Buffer containing data.\r
-\r
-Returns:\r
-\r
- EFI_SUCCESS - Access the data successfully.\r
- other - An error occurred when operating on the disk.\r
-\r
---*/\r
{\r
FAT_VOLUME *Volume;\r
UINTN Len;\r
Position += Len;\r
UserBuffer += Len;\r
BufferSize -= Len;\r
- if (IoMode == WRITE_DATA) {\r
+ if (IoMode == WriteData) {\r
OFile->Dirty = TRUE;\r
OFile->Archive = TRUE;\r
}\r
return Status;\r
}\r
\r
-EFI_STATUS\r
-FatExpandOFile (\r
- IN FAT_OFILE *OFile,\r
- IN UINT64 ExpandedSize\r
- )\r
-/*++\r
-\r
-Routine Description:\r
+/**\r
\r
Expand OFile by appending zero bytes at the end of OFile.\r
\r
-Arguments:\r
-\r
- OFile - The open file.\r
- ExpandedSize - The number of zero bytes appended at the end of the file.\r
+ @param OFile - The open file.\r
+ @param ExpandedSize - The number of zero bytes appended at the end of the file.\r
\r
-Returns:\r
+ @retval EFI_SUCCESS - The file is expanded successfully.\r
+ @return other - An error occurred when expanding file.\r
\r
- EFI_SUCCESS - The file is expanded successfully.\r
- other - An error occurred when expanding file.\r
-\r
---*/\r
+**/\r
+EFI_STATUS\r
+FatExpandOFile (\r
+ IN FAT_OFILE *OFile,\r
+ IN UINT64 ExpandedSize\r
+ )\r
{\r
EFI_STATUS Status;\r
UINTN WritePos;\r
return Status;\r
}\r
\r
-EFI_STATUS\r
-FatWriteZeroPool (\r
- IN FAT_OFILE *OFile,\r
- IN UINTN WritePos\r
- )\r
-/*++\r
-\r
-Routine Description:\r
+/**\r
\r
Write zero pool from the WritePos to the end of OFile.\r
\r
-Arguments:\r
-\r
- OFile - The open file to write zero pool.\r
- WritePos - The number of zero bytes written.\r
+ @param OFile - The open file to write zero pool.\r
+ @param WritePos - The number of zero bytes written.\r
\r
-Returns:\r
+ @retval EFI_SUCCESS - Write the zero pool successfully.\r
+ @retval EFI_OUT_OF_RESOURCES - Not enough memory to perform the operation.\r
+ @return other - An error occurred when writing disk.\r
\r
- EFI_SUCCESS - Write the zero pool successfully.\r
- EFI_OUT_OF_RESOURCES - Not enough memory to perform the operation.\r
- other - An error occurred when writing disk.\r
-\r
---*/\r
+**/\r
+EFI_STATUS\r
+FatWriteZeroPool (\r
+ IN FAT_OFILE *OFile,\r
+ IN UINTN WritePos\r
+ )\r
{\r
EFI_STATUS Status;\r
VOID *ZeroBuffer;\r
do {\r
WriteSize = AppendedSize > BufferSize ? BufferSize : (UINTN) AppendedSize;\r
AppendedSize -= WriteSize;\r
- Status = FatAccessOFile (OFile, WRITE_DATA, WritePos, &WriteSize, ZeroBuffer, NULL);\r
+ Status = FatAccessOFile (OFile, WriteData, WritePos, &WriteSize, ZeroBuffer, NULL);\r
if (EFI_ERROR (Status)) {\r
break;\r
}\r
return Status;\r
}\r
\r
-EFI_STATUS\r
-FatTruncateOFile (\r
- IN FAT_OFILE *OFile,\r
- IN UINTN TruncatedSize\r
- )\r
-/*++\r
-\r
-Routine Description:\r
+/**\r
\r
Truncate the OFile to smaller file size.\r
\r
-Arguments:\r
-\r
- OFile - The open file.\r
- TruncatedSize - The new file size.\r
+ @param OFile - The open file.\r
+ @param TruncatedSize - The new file size.\r
\r
-Returns:\r
+ @retval EFI_SUCCESS - The file is truncated successfully.\r
+ @return other - An error occurred when truncating file.\r
\r
- EFI_SUCCESS - The file is truncated successfully.\r
- other - An error occurred when truncating file.\r
-\r
---*/\r
+**/\r
+EFI_STATUS\r
+FatTruncateOFile (\r
+ IN FAT_OFILE *OFile,\r
+ IN UINTN TruncatedSize\r
+ )\r
{\r
OFile->FileSize = TruncatedSize;\r
return FatShrinkEof (OFile);\r