]> git.proxmox.com Git - mirror_edk2.git/blobdiff - UnixPkg/Include/Protocol/UnixThunk.h
Fix issue with fixing tabs.
[mirror_edk2.git] / UnixPkg / Include / Protocol / UnixThunk.h
index 67bf53761c12f15914e990ff11871c3150a1f322..476dcc659f9954b181655ee74cf79eb0d184094a 100644 (file)
@@ -1,14 +1,14 @@
 /*++
 
 Copyright (c) 2004 - 2009, Intel Corporation. All rights reserved.<BR>
-Portions copyright (c) 2008 - 2009, 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        
-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.             
+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
+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:
 
@@ -29,112 +29,12 @@ Abstract:
 #ifndef _UNIX_THUNK_H_
 #define _UNIX_THUNK_H_
 
-#include <sys/termios.h>
-#include <stdio.h>
-#include <sys/time.h>
-
-#if __CYGWIN__
-#include <sys/dirent.h>
-#else
-#include <sys/dir.h>
-#endif
-
-#include <unistd.h>
-#include <poll.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-#include <time.h>
-#include <signal.h>
-#include <errno.h>
-#include <string.h>
-#include <stdlib.h>
-#include <sys/ioctl.h>
-
-#ifdef __APPLE__
-#include <sys/param.h>
-#include <sys/mount.h>
-#define _XOPEN_SOURCE
-#else
-#include <termio.h>
-#include <sys/vfs.h>
-#endif 
-
-#include <utime.h>
-#include <dlfcn.h>
-#include <ucontext.h>
+#include <Common/UnixInclude.h>
 
 #include <Base.h>
 #include <Library/PeCoffLib.h>
 
 
-#if __APPLE__
-//
-// EFI packing is not compatible witht he default OS packing for struct stat.
-// st_size is 64-bit but starts on a 32-bit offset in the structure. The compiler
-// flags used to produce compatible EFI images, break struct stat
-//
-#pragma pack(4)
-
-#if __DARWIN_64_BIT_INO_T
-
-typedef struct stat_fix { \
-       dev_t           st_dev;                 /* [XSI] ID of device containing file */ 
-       mode_t          st_mode;                /* [XSI] Mode of file (see below) */ 
-       nlink_t         st_nlink;               /* [XSI] Number of hard links */ 
-       __darwin_ino64_t st_ino;                /* [XSI] File serial number */ 
-       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 
-       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 */ 
-       __uint32_t      st_flags;               /* user defined flags for file */ 
-       __uint32_t      st_gen;                 /* file generation number */ 
-       __int32_t       st_lspare;              /* RESERVED: DO NOT USE! */ 
-       __int64_t       st_qspare[2];           /* RESERVED: DO NOT USE! */ 
-} STAT_FIX;
-
-#else /* !__DARWIN_64_BIT_INO_T */
-
-typedef struct stat_fix {
-       dev_t           st_dev;         /* [XSI] ID of device containing file */
-       ino_t           st_ino;         /* [XSI] File serial number */
-       mode_t          st_mode;        /* [XSI] Mode of file (see below) */
-       nlink_t         st_nlink;       /* [XSI] Number of hard links */
-       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 */
-#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
-       struct  timespec st_atimespec;  /* time of last access */
-       struct  timespec st_mtimespec;  /* time of last data modification */
-       struct  timespec st_ctimespec;  /* time of last status change */
-#else
-       time_t          st_atime;       /* [XSI] Time of last access */
-       long            st_atimensec;   /* nsec of last access */
-       time_t          st_mtime;       /* [XSI] Last data modification time */
-       long            st_mtimensec;   /* last data modification nsec */
-       time_t          st_ctime;       /* [XSI] Time of last status change */
-       long            st_ctimensec;   /* nsec of last status change */
-#endif
-       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 */
-       __uint32_t      st_flags;       /* user defined flags for file */
-       __uint32_t      st_gen;         /* file generation number */
-       __int32_t       st_lspare;      /* RESERVED: DO NOT USE! */
-       __int64_t       st_qspare[2];   /* RESERVED: DO NOT USE! */
-} STAT_FIX;
-
-#pragma pack()
-#endif
-
-#else 
-
-  typedef struct stat STAT_FIX;
-
-#endif
 
 #define EFI_UNIX_THUNK_PROTOCOL_GUID \
   { \
@@ -143,181 +43,247 @@ typedef struct stat_fix {
 
 typedef
 VOID
-(*UnixSleep) (
+(EFIAPI *UnixSleep) (
   unsigned long Milliseconds
   );
 
 typedef
 VOID
-(*UnixExit) (
+(EFIAPI *UnixExit) (
   int status  // exit code for all threads
   );
 
 typedef
 VOID
-(*UnixSetTimer) (UINT64 PeriodMs, VOID (*CallBack)(UINT64 DeltaMs));
+(EFIAPI *UnixSetTimer) (
+  UINT64 PeriodMs,
+  VOID (EFIAPI *CallBack)(UINT64 DeltaMs)
+  );
+
 typedef
 VOID
-(*UnixGetLocalTime) (EFI_TIME *Time);
+(EFIAPI *UnixGetLocalTime) (
+  EFI_TIME *Time
+  );
+
 typedef
 struct tm *
-(*UnixGmTime)(const time_t *timep);
+(EFIAPI *UnixGmTime)(
+  const time_t *timep
+  );
+
 typedef
 long
-(*UnixGetTimeZone)(void);
+(EFIAPI *UnixGetTimeZone)(
+  void
+  );
+
 typedef
 int
-(*UnixGetDayLight)(void);
+(EFIAPI *UnixGetDayLight)(
+  void
+  );
+
 typedef
 int
-(*UnixPoll)(struct pollfd *pfd, int nfds, int timeout);
+(EFIAPI *UnixPoll)(
+  struct pollfd *pfd,
+  unsigned int  nfds,
+  int           timeout
+  );
+
 typedef
-int
-(*UnixRead) (int fd, void *buf, int count);
+long
+(EFIAPI *UnixRead) (
+  int  fd,
+  void *buf,
+  int  count
+  );
+
 typedef
-int
-(*UnixWrite) (int fd, const void *buf, int count);
+long
+(EFIAPI *UnixWrite) (
+  int         fd,
+  const void  *buf,
+  int         count
+  );
+
 typedef
 char *
-(*UnixGetenv) (const char *var);
+(EFIAPI *UnixGetenv) (const char *var);
+
 typedef
 int
-(*UnixOpen) (const char *name, int flags, int mode);
+(EFIAPI *UnixOpen) (const char *name, int flags, int mode);
+
 typedef
 off_t
-(*UnixSeek) (int fd, off_t off, int whence);
+(EFIAPI *UnixSeek) (int fd, off_t off, int whence);
+
 typedef
 int
-(*UnixFtruncate) (int fd, long int len);
+(EFIAPI *UnixFtruncate) (int fd, long int len);
+
 typedef
 int
-(*UnixClose) (int fd);
+(EFIAPI *UnixClose) (int fd);
 
 typedef
 int
-(*UnixMkdir)(const char *pathname, mode_t mode);
+(EFIAPI *UnixMkdir)(const char *pathname, mode_t mode);
+
 typedef
 int
-(*UnixRmDir)(const char *pathname);
+(EFIAPI *UnixRmDir)(const char *pathname);
+
 typedef
 int
-(*UnixUnLink)(const char *pathname);
+(EFIAPI *UnixUnLink)(const char *pathname);
+
 typedef
 int
-(*UnixGetErrno)(VOID);
+(EFIAPI *UnixGetErrno)(VOID);
+
 typedef
 DIR *
-(*UnixOpenDir)(const char *pathname);
+(EFIAPI *UnixOpenDir)(const char *pathname);
+
 typedef
 void
-(*UnixRewindDir)(DIR *dir);
+(EFIAPI *UnixRewindDir)(DIR *dir);
+
 typedef
 struct dirent *
-(*UnixReadDir)(DIR *dir);
+(EFIAPI *UnixReadDir)(DIR *dir);
+
 typedef
 int
-(*UnixCloseDir)(DIR *dir);
+(EFIAPI *UnixCloseDir)(DIR *dir);
+
 typedef
 int
-(*UnixStat)(const char *path, STAT_FIX *buf);
+(EFIAPI *UnixStat)(const char *path, STAT_FIX *buf);
+
 typedef
 int
-(*UnixStatFs)(const char *path, struct statfs *buf);
+(EFIAPI *UnixStatFs)(const char *path, struct statfs *buf);
+
 typedef
 int
-(*UnixRename)(const char *oldpath, const char *newpath);
+(EFIAPI *UnixRename)(const char *oldpath, const char *newpath);
+
 typedef
 time_t
-(*UnixMkTime)(struct tm *tm);
+(EFIAPI *UnixMkTime)(struct tm *tm);
+
 typedef
 int
-(*UnixFSync)(int fd);
+(EFIAPI *UnixFSync)(int fd);
+
 typedef
 int
-(*UnixChmod)(const char *path, mode_t mode);
+(EFIAPI *UnixChmod)(const char *path, mode_t mode);
+
 typedef
 int
-(*UnixUTime)(const char *filename, const struct utimbuf *buf);
+(EFIAPI *UnixUTime)(const char *filename, const struct utimbuf *buf);
 
 struct _EFI_UNIX_UGA_IO_PROTOCOL;
 typedef
 EFI_STATUS
-(*UnixUgaCreate)(struct _EFI_UNIX_UGA_IO_PROTOCOL **UgaIo,
-                CONST CHAR16 *Title);
+(EFIAPI *UnixUgaCreate)(struct _EFI_UNIX_UGA_IO_PROTOCOL **UgaIo,
+     CONST CHAR16 *Title);
 
 typedef
 int
-(*UnixTcflush) (int fildes, int queue_selector);
+(EFIAPI *UnixTcflush) (int fildes, int queue_selector);
 
 typedef
 void
-(*UnixPerror) (__const char *__s);
+(EFIAPI *UnixPerror) (__const char *__s);
 
-typedef 
-int 
+typedef
+int
 #if __CYGWIN__
-(*UnixIoCtl) (int fd, int __request, ...);
+(EFIAPI *UnixIoCtl) (int fd, int __request, UINTN Arg);
 #else
-(*UnixIoCtl) (int fd, unsigned long int __request, ...);
+(EFIAPI *UnixIoCtl) (int fd, unsigned long int __request, void *Arg);
 #endif
 
-typedef 
-int 
-(*UnixFcntl) (int __fd, int __cmd, ...);
-
 typedef
-int 
-(*UnixCfsetispeed) (struct termios *__termios_p, speed_t __speed);
-
-typedef 
-int 
-(*UnixCfsetospeed) (struct termios *__termios_p, speed_t __speed);
+int
+(EFIAPI *UnixFcntl) (int __fd, int __cmd, void *Arg);
 
 typedef
-int 
-(*UnixTcgetattr) (int __fd, struct termios *__termios_p);
-
-typedef 
-int 
-(*UnixTcsetattr) (int __fd, int __optional_actions,
-                     __const struct termios *__termios_p);
+int
+(EFIAPI *UnixCfsetispeed) (struct termios *__termios_p, speed_t __speed);
 
-typedef 
-VOID *
-(*UnixDlopen) (const char *FileName, int Flag);
+typedef
+int
+(EFIAPI *UnixCfsetospeed) (struct termios *__termios_p, speed_t __speed);
 
 typedef
-char *
-(*UnixDlerror) (VOID);
+int
+(EFIAPI *UnixTcgetattr) (int __fd, struct termios *__termios_p);
 
-typedef 
-VOID *
-(*UnixDlsym) (VOID* Handle, const char* Symbol);
+typedef
+int
+(EFIAPI *UnixTcsetattr) (int __fd, int __optional_actions,
+          __const struct termios *__termios_p);
 
 
 //
-// Work functions to enable source level debug in the emulator
+// Worker functions to enable source level debug in the emulator
 //
 
-typedef 
+typedef
 RETURN_STATUS
 (EFIAPI *UnixPeCoffGetEntryPoint) (
   IN     VOID  *Pe32Data,
   IN OUT VOID  **EntryPoint
   );
 
-typedef 
+typedef
 VOID
 (EFIAPI *UnixPeCoffRelocateImageExtraAction) (
   IN OUT PE_COFF_LOADER_IMAGE_CONTEXT  *ImageContext
   );
 
-typedef 
+typedef
 VOID
 (EFIAPI *UnixPeCoffLoaderUnloadImageExtraAction) (
   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')
@@ -326,20 +292,20 @@ typedef struct _EFI_UNIX_THUNK_PROTOCOL {
   UINT64                              Signature;
 
   UnixSleep                           Sleep;
-  UnixExit                           Exit;
+  UnixExit                            Exit;
   UnixSetTimer                        SetTimer;
-  UnixGetLocalTime                             GetLocalTime;
+  UnixGetLocalTime                    GetLocalTime;
   UnixGmTime                          GmTime;
   UnixGetTimeZone                     GetTimeZone;
   UnixGetDayLight                     GetDayLight;
-  UnixPoll                               Poll;
-  UnixRead                           Read;
-  UnixWrite                          Write;
-  UnixGetenv                         Getenv;
-  UnixOpen                           Open;
-  UnixSeek                           Lseek;
-  UnixFtruncate                      FTruncate;
-  UnixClose                          Close;
+  UnixPoll                            Poll;
+  UnixRead                            Read;
+  UnixWrite                           Write;
+  UnixGetenv                          Getenv;
+  UnixOpen                            Open;
+  UnixSeek                            Lseek;
+  UnixFtruncate                       FTruncate;
+  UnixClose                           Close;
   UnixMkdir                           MkDir;
   UnixRmDir                           RmDir;
   UnixUnLink                          UnLink;
@@ -356,7 +322,7 @@ typedef struct _EFI_UNIX_THUNK_PROTOCOL {
   UnixChmod                           Chmod;
   UnixUTime                           UTime;
   UnixTcflush                         Tcflush;
-  UnixUgaCreate                                          UgaCreate;
+  UnixUgaCreate                        UgaCreate;
   UnixPerror                          Perror;
   UnixIoCtl                           IoCtl;
   UnixFcntl                           Fcntl;
@@ -364,14 +330,15 @@ typedef struct _EFI_UNIX_THUNK_PROTOCOL {
   UnixCfsetospeed                     Cfsetospeed;
   UnixTcgetattr                       Tcgetattr;
   UnixTcsetattr                       Tcsetattr;
-  UnixDlopen                          Dlopen;
-  UnixDlerror                         Dlerror;
-  UnixDlsym                           Dlsym;
   UnixPeCoffGetEntryPoint                 PeCoffGetEntryPoint;
   UnixPeCoffRelocateImageExtraAction      PeCoffRelocateImageExtraAction;
   UnixPeCoffLoaderUnloadImageExtraAction  PeCoffUnloadImageExtraAction;
-       
-       
+  UnixEnableInterruptEmulation        EnableInterrupt;
+  UnixDisableInterruptEmulation       DisableInterrupt;
+
+  UnixGetIfAddrs                      GetIfAddrs;
+  UnixFreeIfAddrs                     FreeIfAddrs;
+  UnixSocket                          Socket;
 } EFI_UNIX_THUNK_PROTOCOL;
 
 extern EFI_GUID gEfiUnixThunkProtocolGuid;