Aligned - A read of N contiguous sectors.\r
OverRun - The last byte is not on a sector boundary.\r
\r
-Copyright (c) 2006 - 2014, Intel Corporation. All rights reserved.<BR>\r
+Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>\r
This program and the accompanying materials\r
are licensed and made available under the terms and conditions of the BSD License\r
which accompanies this distribution. The full text of the license may be found at\r
};\r
\r
/**\r
- Test to see if this driver supports ControllerHandle. \r
+ Test to see if this driver supports ControllerHandle.\r
\r
@param This Protocol instance pointer.\r
@param ControllerHandle Handle of device to test\r
if (EFI_ERROR (Status)) {\r
gDiskIoPrivateDataTemplate.BlockIo2 = NULL;\r
}\r
- \r
+\r
//\r
// Initialize the Disk IO device instance.\r
//\r
Status = EFI_OUT_OF_RESOURCES;\r
goto ErrorExit;\r
}\r
- \r
+\r
//\r
// The BlockSize and IoAlign of BlockIo and BlockIo2 should equal.\r
//\r
ASSERT ((Instance->BlockIo2 == NULL) ||\r
- ((Instance->BlockIo->Media->IoAlign == Instance->BlockIo2->Media->IoAlign) && \r
+ ((Instance->BlockIo->Media->IoAlign == Instance->BlockIo2->Media->IoAlign) &&\r
(Instance->BlockIo->Media->BlockSize == Instance->BlockIo2->Media->BlockSize)\r
));\r
- \r
+\r
InitializeListHead (&Instance->TaskQueue);\r
EfiInitializeLock (&Instance->TaskQueueLock, TPL_NOTIFY);\r
Instance->SharedWorkingBuffer = AllocateAlignedPages (\r
if (EFI_ERROR (Status)) {\r
DiskIo2 = NULL;\r
}\r
- \r
+\r
Instance = DISK_IO_PRIVATE_DATA_FROM_DISK_IO (DiskIo);\r
\r
if (DiskIo2 != NULL) {\r
);\r
}\r
if (!EFI_ERROR (Status)) {\r
- \r
+\r
do {\r
EfiAcquireLock (&Instance->TaskQueueLock);\r
AllTaskDone = IsListEmpty (&Instance->TaskQueue);\r
);\r
ASSERT_EFI_ERROR (Status);\r
}\r
- \r
+\r
FreePool (Instance);\r
}\r
\r
if (!Subtask->Blocking) {\r
if (Subtask->WorkingBuffer != NULL) {\r
FreeAlignedPages (\r
- Subtask->WorkingBuffer, \r
+ Subtask->WorkingBuffer,\r
Subtask->Length < Instance->BlockIo->Media->BlockSize\r
? EFI_SIZE_TO_PAGES (Instance->BlockIo->Media->BlockSize)\r
: EFI_SIZE_TO_PAGES (Subtask->Length)\r
ASSERT (Instance->Signature == DISK_IO_PRIVATE_DATA_SIGNATURE);\r
ASSERT (Task->Signature == DISK_IO2_TASK_SIGNATURE);\r
\r
- if ((Subtask->WorkingBuffer != NULL) && !EFI_ERROR (TransactionStatus) && \r
+ if ((Subtask->WorkingBuffer != NULL) && !EFI_ERROR (TransactionStatus) &&\r
(Task->Token != NULL) && !Subtask->Write\r
) {\r
CopyMem (Subtask->Buffer, Subtask->WorkingBuffer + Subtask->Offset, Subtask->Length);\r
}\r
}\r
DEBUG ((\r
- EFI_D_BLKIO, \r
+ EFI_D_BLKIO,\r
" %c:Lba/Offset/Length/WorkingBuffer/Buffer = %016lx/%08x/%08x/%08x/%08x\n",\r
Write ? 'W': 'R', Lba, Offset, Length, WorkingBuffer, Buffer\r
));\r
if (IoAlign == 0) {\r
IoAlign = 1;\r
}\r
- \r
+\r
Lba = DivU64x32Remainder (Offset, BlockSize, &UnderRun);\r
BufferPtr = (UINT8 *) Buffer;\r
\r
goto Done;\r
}\r
InsertTailList (Subtasks, &Subtask->Link);\r
- \r
+\r
BufferPtr += Length;\r
Offset += Length;\r
BufferSize -= Length;\r
}\r
InsertTailList (Subtasks, &Subtask->Link);\r
}\r
- \r
+\r
if (OverRunLba > Lba) {\r
//\r
// If the DiskIo maps directly to a BlockIo device do the read.\r
DISK_IO_PRIVATE_DATA *Instance;\r
DISK_IO2_TASK *Task;\r
LIST_ENTRY *Link;\r
- \r
+\r
Instance = DISK_IO_PRIVATE_DATA_FROM_DISK_IO2 (This);\r
\r
EfiAcquireLock (&Instance->TaskQueueLock);\r
If this field is NULL, synchronous/blocking IO is performed.\r
@param BufferSize The size in bytes of Buffer. The number of bytes to read from the device.\r
@param Buffer A pointer to the destination buffer for the data.\r
- The caller is responsible either having implicit or explicit ownership of the buffer. \r
+ The caller is responsible either having implicit or explicit ownership of the buffer.\r
**/\r
EFI_STATUS\r
DiskIo2ReadWriteDisk (\r
Status = EFI_SUCCESS;\r
Blocking = (BOOLEAN) ((Token == NULL) || (Token->Event == NULL));\r
\r
- if (!(Media->MediaPresent)) {\r
- return EFI_NO_MEDIA;\r
- }\r
-\r
- if (Media->MediaId != MediaId) {\r
- return EFI_MEDIA_CHANGED;\r
- }\r
- \r
- if (Write && Media->ReadOnly) {\r
- return EFI_WRITE_PROTECTED;\r
- }\r
-\r
if (Blocking) {\r
//\r
// Wait till pending async task is completed.\r
break;\r
}\r
}\r
- \r
+\r
gBS->RaiseTPL (TPL_NOTIFY);\r
\r
//\r
/**\r
The user Entry Point for module DiskIo. The user code starts with this function.\r
\r
- @param[in] ImageHandle The firmware allocated handle for the EFI image. \r
+ @param[in] ImageHandle The firmware allocated handle for the EFI image.\r
@param[in] SystemTable A pointer to the EFI System Table.\r
- \r
+\r
@retval EFI_SUCCESS The entry point is executed successfully.\r
@retval other Some error occurs when executing this entry point.\r
\r