--- /dev/null
+/*++ @file\r
+ Produce Simple File System abstractions for a directory on your PC using Unix APIs.\r
+ The configuration of what devices to mount or emulate comes from \r
+ environment variables.\r
+\r
+Copyright (c) 2006 - 2009, Intel Corporation. All rights reserved.<BR>\r
+Portions copyright (c) 2011, Apple Inc. All rights reserved.\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
+http://opensource.org/licenses/bsd-license.php \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
+\r
+#ifndef _EMU_SIMPLE_FILE_SYSTEM_H_\r
+#define _EMU_SIMPLE_FILE_SYSTEM_H_\r
+\r
+#include "PiDxe.h"\r
+\r
+#include <Guid/FileSystemInfo.h>\r
+#include <Guid/FileInfo.h>\r
+#include <Guid/FileSystemVolumeLabelInfo.h>\r
+\r
+#include <Protocol/EmuIoThunk.h>\r
+#include <Protocol/SimpleFileSystem.h>\r
+\r
+#include <Library/DebugLib.h>\r
+#include <Library/BaseLib.h>\r
+#include <Library/UefiDriverEntryPoint.h>\r
+#include <Library/UefiLib.h>\r
+#include <Library/BaseMemoryLib.h>\r
+#include <Library/MemoryAllocationLib.h>\r
+#include <Library/UefiBootServicesTableLib.h>\r
+\r
+\r
+extern EFI_DRIVER_BINDING_PROTOCOL gEmuSimpleFileSystemDriverBinding;\r
+extern EFI_COMPONENT_NAME_PROTOCOL gEmuSimpleFileSystemComponentName;\r
+extern EFI_COMPONENT_NAME2_PROTOCOL gEmuSimpleFileSystemComponentName2;\r
+\r
+#define EMU_SIMPLE_FILE_SYSTEM_PRIVATE_SIGNATURE SIGNATURE_32 ('E', 'M', 'f', 's')\r
+\r
+typedef struct {\r
+ UINTN Signature;\r
+ EMU_IO_THUNK_PROTOCOL *IoThunk;\r
+ EFI_SIMPLE_FILE_SYSTEM_PROTOCOL SimpleFileSystem;\r
+ EFI_SIMPLE_FILE_SYSTEM_PROTOCOL *Io;\r
+ EFI_UNICODE_STRING_TABLE *ControllerNameTable;\r
+} EMU_SIMPLE_FILE_SYSTEM_PRIVATE;\r
+\r
+#define EMU_SIMPLE_FILE_SYSTEM_PRIVATE_DATA_FROM_THIS(a) \\r
+ CR (a, \\r
+ EMU_SIMPLE_FILE_SYSTEM_PRIVATE, \\r
+ SimpleFileSystem, \\r
+ EMU_SIMPLE_FILE_SYSTEM_PRIVATE_SIGNATURE \\r
+ )\r
+\r
+#define EMU_EFI_FILE_PRIVATE_SIGNATURE SIGNATURE_32 ('e', 'm', 'f', 's')\r
+\r
+typedef struct {\r
+ UINTN Signature;\r
+ EMU_IO_THUNK_PROTOCOL *IoThunk;\r
+ EFI_SIMPLE_FILE_SYSTEM_PROTOCOL *SimpleFileSystem;\r
+ EFI_FILE_PROTOCOL EfiFile;\r
+ EFI_FILE_PROTOCOL *Io;\r
+} EMU_EFI_FILE_PRIVATE;\r
+\r
+#define EMU_EFI_FILE_PRIVATE_DATA_FROM_THIS(a) \\r
+ CR (a, \\r
+ EMU_EFI_FILE_PRIVATE, \\r
+ EfiFile, \\r
+ EMU_EFI_FILE_PRIVATE_SIGNATURE \\r
+ )\r
+\r
+\r
+\r
+#endif \r