summaryrefslogtreecommitdiff
path: root/UnixPkg/Include/Protocol/UnixThunk.h
diff options
context:
space:
mode:
authorandrewfish <andrewfish@6f19259b-4bc3-4df7-8a09-765794883524>2010-11-30 23:38:40 +0000
committerandrewfish <andrewfish@6f19259b-4bc3-4df7-8a09-765794883524>2010-11-30 23:38:40 +0000
commit2ff79f2eda16f8219140d3dae188d2b341f610e1 (patch)
tree693b0c0223c7f3a312f292a3a5ba9eff0def4dbe /UnixPkg/Include/Protocol/UnixThunk.h
parente23a349aaec2ba7fd4218c6dabaf42da0aa9aa8e (diff)
downloadedk2-2ff79f2eda16f8219140d3dae188d2b341f610e1.zip
edk2-2ff79f2eda16f8219140d3dae188d2b341f610e1.tar.gz
edk2-2ff79f2eda16f8219140d3dae188d2b341f610e1.tar.bz2
Adding Simple Pointer, GOP, SimpleTextInEx, and Networking protocols to the emulator. Cleaned up POSIX include situation by centralizing it in a single file, like NT32. Fixed TPL issue with TPL High not being emulated correctly, it was possible to take a timer tick when the locks in the DXE core should have prevented this. Remove some unused files to make things easier to maintain.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@11105 6f19259b-4bc3-4df7-8a09-765794883524
Diffstat (limited to 'UnixPkg/Include/Protocol/UnixThunk.h')
-rw-r--r--UnixPkg/Include/Protocol/UnixThunk.h68
1 files changed, 64 insertions, 4 deletions
diff --git a/UnixPkg/Include/Protocol/UnixThunk.h b/UnixPkg/Include/Protocol/UnixThunk.h
index 307da1f..a5383be 100644
--- a/UnixPkg/Include/Protocol/UnixThunk.h
+++ b/UnixPkg/Include/Protocol/UnixThunk.h
@@ -1,7 +1,7 @@
/*++
Copyright (c) 2004 - 2009, Intel Corporation. All rights reserved.<BR>
-Portions copyright (c) 2008 - 2009, Apple Inc. All rights reserved.<BR>
+Portions copyright (c) 2008 - 2010, Apple Inc. All rights reserved.<BR>
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
@@ -51,10 +51,21 @@ Abstract:
#include <stdlib.h>
#include <sys/ioctl.h>
+#include <sys/socket.h>
+#include <netdb.h>
+#include <netinet/in.h>
+#include <net/if.h>
+#include <net/if_dl.h>
+#include <ifaddrs.h>
+#include <net/bpf.h>
+
#ifdef __APPLE__
#include <sys/param.h>
#include <sys/mount.h>
#define _XOPEN_SOURCE
+#ifndef _Bool
+ #define _Bool char // for clang debug
+#endif
#else
#include <termio.h>
#include <sys/vfs.h>
@@ -76,7 +87,15 @@ Abstract:
#pragma pack(4)
#endif
-#if __DARWIN_64_BIT_INO_T
+#if defined(__DARWIN_64_BIT_INO_T)
+
+
+typedef struct {
+ UINTN tv_sec; /* seconds */
+ UINTN tv_nsec; /* and nanoseconds */
+} EFI_timespec;
+
+
typedef struct stat_fix { \
dev_t st_dev; /* [XSI] ID of device containing file */
@@ -86,7 +105,15 @@ typedef struct stat_fix { \
uid_t st_uid; /* [XSI] User ID of the file */
gid_t st_gid; /* [XSI] Group ID of the file */
dev_t st_rdev; /* [XSI] Device ID */
- __DARWIN_STRUCT_STAT64_TIMES
+
+ // clang for X64 ABI follows Windows and a long is 32-bits
+ // this breaks system inlcude files so that is why we need
+ // to redefine timespec as EFI_timespec
+ EFI_timespec st_atimespec;
+ EFI_timespec st_mtimespec;
+ EFI_timespec st_ctimespec;
+ EFI_timespec st_birthtimespec;
+
off_t st_size; /* [XSI] file size, in bytes */
blkcnt_t st_blocks; /* [XSI] blocks allocated for file */
blksize_t st_blksize; /* [XSI] optimal blocksize for I/O */
@@ -358,6 +385,35 @@ VOID
IN OUT PE_COFF_LOADER_IMAGE_CONTEXT *ImageContext
);
+typedef
+int
+(EFIAPI *UnixGetIfAddrs) (
+ struct ifaddrs **ifap
+ );
+
+typedef
+void
+(EFIAPI *UnixFreeIfAddrs) (
+ struct ifaddrs *ifap
+ );
+
+typedef
+int
+(EFIAPI *UnixSocket) (
+ int domain,
+ int type,
+ int protocol
+ );
+
+typedef
+void
+(EFIAPI *UnixDisableInterruptEmulation) (void);
+
+typedef
+void
+(EFIAPI *UnixEnableInterruptEmulation) (void);
+
+
#define EFI_UNIX_THUNK_PROTOCOL_SIGNATURE SIGNATURE_32 ('L', 'N', 'X', 'T')
@@ -407,8 +463,12 @@ typedef struct _EFI_UNIX_THUNK_PROTOCOL {
UnixPeCoffGetEntryPoint PeCoffGetEntryPoint;
UnixPeCoffRelocateImageExtraAction PeCoffRelocateImageExtraAction;
UnixPeCoffLoaderUnloadImageExtraAction PeCoffUnloadImageExtraAction;
+ UnixEnableInterruptEmulation EnableInterrupt;
+ UnixDisableInterruptEmulation DisableInterrupt;
-
+ UnixGetIfAddrs GetIfAddrs;
+ UnixFreeIfAddrs FreeIfAddrs;
+ UnixSocket Socket;
} EFI_UNIX_THUNK_PROTOCOL;
extern EFI_GUID gEfiUnixThunkProtocolGuid;