]> 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 a0908a0c45700790de2dbab1ceb58d9dda6a98cc..476dcc659f9954b181655ee74cf79eb0d184094a 100644 (file)
@@ -1,13 +1,14 @@
 /*++
 
-Copyright (c) 2004, 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.             
+Copyright (c) 2004 - 2009, Intel Corporation. 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
+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:
 
@@ -28,24 +29,12 @@ Abstract:
 #ifndef _UNIX_THUNK_H_
 #define _UNIX_THUNK_H_
 
-#include <sys/termios.h>
-#include <stdio.h>
-#include <sys/time.h>
-#include <sys/dir.h>
-#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 <termio.h>
-#include <sys/ioctl.h>
-#include <sys/vfs.h>
-#include <utime.h>
+#include <Common/UnixInclude.h>
+
+#include <Base.h>
+#include <Library/PeCoffLib.h>
+
+
 
 #define EFI_UNIX_THUNK_PROTOCOL_GUID \
   { \
@@ -54,165 +43,269 @@ Abstract:
 
 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
-long int
-(*UnixSeek) (int fd, long int off, int whence);
+off_t
+(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, struct stat *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 
-(*UnixIoCtl) (int fd, unsigned long int __request, ...);
+typedef
+int
+#if __CYGWIN__
+(EFIAPI *UnixIoCtl) (int fd, int __request, UINTN Arg);
+#else
+(EFIAPI *UnixIoCtl) (int fd, unsigned long int __request, void *Arg);
+#endif
 
-typedef 
-int 
-(*UnixFcntl) (int __fd, int __cmd, ...);
+typedef
+int
+(EFIAPI *UnixFcntl) (int __fd, int __cmd, void *Arg);
 
 typedef
-int 
-(*UnixCfsetispeed) (struct termios *__termios_p, speed_t __speed);
+int
+(EFIAPI *UnixCfsetispeed) (struct termios *__termios_p, speed_t __speed);
 
-typedef 
-int 
-(*UnixCfsetospeed) (struct termios *__termios_p, speed_t __speed);
+typedef
+int
+(EFIAPI *UnixCfsetospeed) (struct termios *__termios_p, speed_t __speed);
 
 typedef
-int 
-(*UnixTcgetattr) (int __fd, struct termios *__termios_p);
+int
+(EFIAPI *UnixTcgetattr) (int __fd, struct termios *__termios_p);
+
+typedef
+int
+(EFIAPI *UnixTcsetattr) (int __fd, int __optional_actions,
+          __const struct termios *__termios_p);
 
-typedef 
-int 
-(*UnixTcsetattr) (int __fd, int __optional_actions,
-                     __const struct termios *__termios_p);
 
 //
+// Worker functions to enable source level debug in the emulator
 //
-//
 
-#define EFI_UNIX_THUNK_PROTOCOL_SIGNATURE EFI_SIGNATURE_32 ('L', 'N', 'X', 'T')
+typedef
+RETURN_STATUS
+(EFIAPI *UnixPeCoffGetEntryPoint) (
+  IN     VOID  *Pe32Data,
+  IN OUT VOID  **EntryPoint
+  );
+
+typedef
+VOID
+(EFIAPI *UnixPeCoffRelocateImageExtraAction) (
+  IN OUT PE_COFF_LOADER_IMAGE_CONTEXT  *ImageContext
+  );
+
+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')
 
 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;
@@ -229,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;
@@ -237,6 +330,15 @@ typedef struct _EFI_UNIX_THUNK_PROTOCOL {
   UnixCfsetospeed                     Cfsetospeed;
   UnixTcgetattr                       Tcgetattr;
   UnixTcsetattr                       Tcsetattr;
+  UnixPeCoffGetEntryPoint                 PeCoffGetEntryPoint;
+  UnixPeCoffRelocateImageExtraAction      PeCoffRelocateImageExtraAction;
+  UnixPeCoffLoaderUnloadImageExtraAction  PeCoffUnloadImageExtraAction;
+  UnixEnableInterruptEmulation        EnableInterrupt;
+  UnixDisableInterruptEmulation       DisableInterrupt;
+
+  UnixGetIfAddrs                      GetIfAddrs;
+  UnixFreeIfAddrs                     FreeIfAddrs;
+  UnixSocket                          Socket;
 } EFI_UNIX_THUNK_PROTOCOL;
 
 extern EFI_GUID gEfiUnixThunkProtocolGuid;