| /*++ | |
| Copyright (c) 2004 - 2008, Intel Corporation | |
| All rights reserved. This program and the accompanying materials | |
| are licensed and made available under the terms and conditions of the BSD License | |
| which accompanies this distribution. The full text of the license may be found at | |
| http://opensource.org/licenses/bsd-license.php | |
| THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, | |
| WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. | |
| Module Name: | |
| UnixBlockIo.h | |
| Abstract: | |
| Produce block IO abstractions for real devices on your PC using Posix APIs. | |
| The configuration of what devices to mount or emulate comes from UNIX | |
| environment variables. The variables must be visible to the Microsoft* | |
| Developer Studio for them to work. | |
| * Other names and brands may be claimed as the property of others. | |
| --*/ | |
| #ifndef _UNIX_BLOCK_IO_H_ | |
| #define _UNIX_BLOCK_IO_H_ | |
| #include "PiDxe.h" | |
| #include <Protocol/BlockIo.h> | |
| #include <Library/DebugLib.h> | |
| #include <Library/BaseLib.h> | |
| #include <Library/UefiDriverEntryPoint.h> | |
| #include <Library/UefiLib.h> | |
| #include <Library/BaseMemoryLib.h> | |
| #include <Library/MemoryAllocationLib.h> | |
| #include <Library/UefiBootServicesTableLib.h> | |
| #include "UnixDxe.h" | |
| #define FILENAME_BUFFER_SIZE 80 | |
| // | |
| // Language supported for driverconfiguration protocol | |
| // | |
| #define LANGUAGESUPPORTED "eng" | |
| #define UNIX_BLOCK_IO_PRIVATE_SIGNATURE SIGNATURE_32 ('L', 'X', 'b', 'k') | |
| typedef struct { | |
| UINTN Signature; | |
| EFI_LOCK Lock; | |
| char Filename[FILENAME_BUFFER_SIZE]; | |
| UINTN ReadMode; | |
| UINTN Mode; | |
| int fd; | |
| UINT64 LastBlock; | |
| UINTN BlockSize; | |
| UINT64 NumberOfBlocks; | |
| EFI_HANDLE EfiHandle; | |
| EFI_BLOCK_IO_PROTOCOL BlockIo; | |
| EFI_BLOCK_IO_MEDIA Media; | |
| EFI_UNICODE_STRING_TABLE *ControllerNameTable; | |
| EFI_UNIX_THUNK_PROTOCOL *UnixThunk; | |
| } UNIX_BLOCK_IO_PRIVATE; | |
| #define UNIX_BLOCK_IO_PRIVATE_DATA_FROM_THIS(a) \ | |
| CR(a, UNIX_BLOCK_IO_PRIVATE, BlockIo, UNIX_BLOCK_IO_PRIVATE_SIGNATURE) | |
| #define LIST_BUFFER_SIZE 512 | |
| // | |
| // Block I/O Global Variables | |
| // | |
| extern EFI_DRIVER_BINDING_PROTOCOL gUnixBlockIoDriverBinding; | |
| extern EFI_COMPONENT_NAME_PROTOCOL gUnixBlockIoComponentName; | |
| extern EFI_DRIVER_CONFIGURATION_PROTOCOL gUnixBlockIoDriverConfiguration; | |
| extern EFI_DRIVER_DIAGNOSTICS_PROTOCOL gUnixBlockIoDriverDiagnostics; | |
| // | |
| // EFI Driver Binding Functions | |
| // | |
| EFI_STATUS | |
| EFIAPI | |
| UnixBlockIoDriverBindingSupported ( | |
| IN EFI_DRIVER_BINDING_PROTOCOL *This, | |
| IN EFI_HANDLE Handle, | |
| IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath | |
| ) | |
| /*++ | |
| Routine Description: | |
| TODO: Add function description | |
| Arguments: | |
| This - TODO: add argument description | |
| Handle - TODO: add argument description | |
| RemainingDevicePath - TODO: add argument description | |
| Returns: | |
| TODO: add return values | |
| --*/ | |
| ; | |
| EFI_STATUS | |
| EFIAPI | |
| UnixBlockIoDriverBindingStart ( | |
| IN EFI_DRIVER_BINDING_PROTOCOL *This, | |
| IN EFI_HANDLE Handle, | |
| IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath | |
| ) | |
| /*++ | |
| Routine Description: | |
| TODO: Add function description | |
| Arguments: | |
| This - TODO: add argument description | |
| Handle - TODO: add argument description | |
| RemainingDevicePath - TODO: add argument description | |
| Returns: | |
| TODO: add return values | |
| --*/ | |
| ; | |
| EFI_STATUS | |
| EFIAPI | |
| UnixBlockIoDriverBindingStop ( | |
| IN EFI_DRIVER_BINDING_PROTOCOL *This, | |
| IN EFI_HANDLE Handle, | |
| IN UINTN NumberOfChildren, | |
| IN EFI_HANDLE *ChildHandleBuffer | |
| ) | |
| /*++ | |
| Routine Description: | |
| TODO: Add function description | |
| Arguments: | |
| This - TODO: add argument description | |
| Handle - TODO: add argument description | |
| NumberOfChildren - TODO: add argument description | |
| ChildHandleBuffer - TODO: add argument description | |
| Returns: | |
| TODO: add return values | |
| --*/ | |
| ; | |
| EFI_STATUS | |
| SetFilePointer64 ( | |
| IN UNIX_BLOCK_IO_PRIVATE *Private, | |
| IN INT64 DistanceToMove, | |
| OUT UINT64 *NewFilePointer, | |
| IN INT32 MoveMethod | |
| ) | |
| /*++ | |
| Routine Description: | |
| TODO: Add function description | |
| Arguments: | |
| Private - TODO: add argument description | |
| DistanceToMove - TODO: add argument description | |
| NewFilePointer - TODO: add argument description | |
| MoveMethod - TODO: add argument description | |
| Returns: | |
| TODO: add return values | |
| --*/ | |
| ; | |
| UINTN | |
| Atoi ( | |
| CHAR16 *String | |
| ) | |
| /*++ | |
| Routine Description: | |
| TODO: Add function description | |
| Arguments: | |
| String - TODO: add argument description | |
| Returns: | |
| TODO: add return values | |
| --*/ | |
| ; | |
| #endif |