3 Copyright (c) 2004 - 2008, Intel Corporation
4 All rights reserved. This program and the accompanying materials
5 are licensed and made available under the terms and conditions of the BSD License
6 which accompanies this distribution. The full text of the license may be found at
7 http://opensource.org/licenses/bsd-license.php
9 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
10 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
18 Produce block IO abstractions for real devices on your PC using Posix APIs.
19 The configuration of what devices to mount or emulate comes from UNIX
20 environment variables. The variables must be visible to the Microsoft*
21 Developer Studio for them to work.
23 * Other names and brands may be claimed as the property of others.
27 #ifndef _UNIX_BLOCK_IO_H_
28 #define _UNIX_BLOCK_IO_H_
31 #include <Protocol/BlockIo.h>
33 #include <Library/DebugLib.h>
34 #include <Library/BaseLib.h>
35 #include <Library/UefiDriverEntryPoint.h>
36 #include <Library/UefiLib.h>
37 #include <Library/BaseMemoryLib.h>
38 #include <Library/MemoryAllocationLib.h>
39 #include <Library/UefiBootServicesTableLib.h>
42 #define FILENAME_BUFFER_SIZE 80
45 // Language supported for driverconfiguration protocol
47 #define LANGUAGESUPPORTED "eng"
49 #define UNIX_BLOCK_IO_PRIVATE_SIGNATURE EFI_SIGNATURE_32 ('L', 'X', 'b', 'k')
55 char Filename
[FILENAME_BUFFER_SIZE
];
63 UINT64 NumberOfBlocks
;
66 EFI_BLOCK_IO_PROTOCOL BlockIo
;
67 EFI_BLOCK_IO_MEDIA Media
;
69 EFI_UNICODE_STRING_TABLE
*ControllerNameTable
;
71 EFI_UNIX_THUNK_PROTOCOL
*UnixThunk
;
73 } UNIX_BLOCK_IO_PRIVATE
;
75 #define UNIX_BLOCK_IO_PRIVATE_DATA_FROM_THIS(a) \
76 CR(a, UNIX_BLOCK_IO_PRIVATE, BlockIo, UNIX_BLOCK_IO_PRIVATE_SIGNATURE)
78 #define LIST_BUFFER_SIZE 512
81 // Block I/O Global Variables
83 extern EFI_DRIVER_BINDING_PROTOCOL gUnixBlockIoDriverBinding
;
84 extern EFI_COMPONENT_NAME_PROTOCOL gUnixBlockIoComponentName
;
85 extern EFI_DRIVER_CONFIGURATION_PROTOCOL gUnixBlockIoDriverConfiguration
;
86 extern EFI_DRIVER_DIAGNOSTICS_PROTOCOL gUnixBlockIoDriverDiagnostics
;
89 // EFI Driver Binding Functions
93 UnixBlockIoDriverBindingSupported (
94 IN EFI_DRIVER_BINDING_PROTOCOL
*This
,
96 IN EFI_DEVICE_PATH_PROTOCOL
*RemainingDevicePath
102 TODO: Add function description
106 This - TODO: add argument description
107 Handle - TODO: add argument description
108 RemainingDevicePath - TODO: add argument description
112 TODO: add return values
119 UnixBlockIoDriverBindingStart (
120 IN EFI_DRIVER_BINDING_PROTOCOL
*This
,
121 IN EFI_HANDLE Handle
,
122 IN EFI_DEVICE_PATH_PROTOCOL
*RemainingDevicePath
128 TODO: Add function description
132 This - TODO: add argument description
133 Handle - TODO: add argument description
134 RemainingDevicePath - TODO: add argument description
138 TODO: add return values
145 UnixBlockIoDriverBindingStop (
146 IN EFI_DRIVER_BINDING_PROTOCOL
*This
,
147 IN EFI_HANDLE Handle
,
148 IN UINTN NumberOfChildren
,
149 IN EFI_HANDLE
*ChildHandleBuffer
155 TODO: Add function description
159 This - TODO: add argument description
160 Handle - TODO: add argument description
161 NumberOfChildren - TODO: add argument description
162 ChildHandleBuffer - TODO: add argument description
166 TODO: add return values
173 IN UNIX_BLOCK_IO_PRIVATE
*Private
,
174 IN INT64 DistanceToMove
,
175 OUT UINT64
*NewFilePointer
,
182 TODO: Add function description
186 Private - TODO: add argument description
187 DistanceToMove - TODO: add argument description
188 NewFilePointer - TODO: add argument description
189 MoveMethod - TODO: add argument description
193 TODO: add return values
206 TODO: Add function description
210 String - TODO: add argument description
214 TODO: add return values