git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@2606 6f19259b-4bc3-4df7-8a09-765794883524
		
			
				
	
	
		
			228 lines
		
	
	
		
			5.6 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			228 lines
		
	
	
		
			5.6 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/*++
 | 
						|
 | 
						|
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.             
 | 
						|
 | 
						|
Module Name:
 | 
						|
 | 
						|
  UnixThunk.h
 | 
						|
 | 
						|
Abstract:
 | 
						|
 | 
						|
  This protocol allows an EFI driver in the Unix emulation environment
 | 
						|
  to make Posix calls.
 | 
						|
 | 
						|
  NEVER make an Unix call directly, always make the call via this protocol.
 | 
						|
 | 
						|
  There are no This pointers on the protocol member functions as they map
 | 
						|
  exactly into Unix system calls.
 | 
						|
 | 
						|
--*/
 | 
						|
 | 
						|
#ifndef _UNIX_THUNK_H_
 | 
						|
#define _UNIX_THUNK_H_
 | 
						|
 | 
						|
#include <sys/termios.h>
 | 
						|
 | 
						|
#define EFI_UNIX_THUNK_PROTOCOL_GUID \
 | 
						|
  { \
 | 
						|
    0xf2e98868, 0x8985, 0x11db, {0x9a, 0x59, 0x00, 0x40, 0xd0, 0x2b, 0x18, 0x35 } \
 | 
						|
  }
 | 
						|
 | 
						|
typedef
 | 
						|
VOID
 | 
						|
(*UnixSleep) (
 | 
						|
  unsigned long Milliseconds
 | 
						|
  );
 | 
						|
 | 
						|
typedef
 | 
						|
VOID
 | 
						|
(*UnixExit) (
 | 
						|
  int status  // exit code for all threads
 | 
						|
  );
 | 
						|
 | 
						|
typedef
 | 
						|
VOID
 | 
						|
(*UnixSetTimer) (UINT64 PeriodMs, VOID (*CallBack)(UINT64 DeltaMs));
 | 
						|
typedef
 | 
						|
VOID
 | 
						|
(*UnixGetLocalTime) (EFI_TIME *Time);
 | 
						|
typedef
 | 
						|
struct tm *
 | 
						|
(*UnixGmTime)(const time_t *timep);
 | 
						|
typedef
 | 
						|
long
 | 
						|
(*UnixGetTimeZone)(void);
 | 
						|
typedef
 | 
						|
int
 | 
						|
(*UnixGetDayLight)(void);
 | 
						|
typedef
 | 
						|
int
 | 
						|
(*UnixPoll)(struct pollfd *pfd, int nfds, int timeout);
 | 
						|
typedef
 | 
						|
int
 | 
						|
(*UnixRead) (int fd, void *buf, int count);
 | 
						|
typedef
 | 
						|
int
 | 
						|
(*UnixWrite) (int fd, const void *buf, int count);
 | 
						|
typedef
 | 
						|
char *
 | 
						|
(*UnixGetenv) (const char *var);
 | 
						|
typedef
 | 
						|
int
 | 
						|
(*UnixOpen) (const char *name, int flags, int mode);
 | 
						|
typedef
 | 
						|
long int
 | 
						|
(*UnixSeek) (int fd, long int off, int whence);
 | 
						|
typedef
 | 
						|
int
 | 
						|
(*UnixFtruncate) (int fd, long int len);
 | 
						|
typedef
 | 
						|
int
 | 
						|
(*UnixClose) (int fd);
 | 
						|
 | 
						|
typedef
 | 
						|
int
 | 
						|
(*UnixMkdir)(const char *pathname, mode_t mode);
 | 
						|
typedef
 | 
						|
int
 | 
						|
(*UnixRmDir)(const char *pathname);
 | 
						|
typedef
 | 
						|
int
 | 
						|
(*UnixUnLink)(const char *pathname);
 | 
						|
typedef
 | 
						|
int
 | 
						|
(*UnixGetErrno)(VOID);
 | 
						|
typedef
 | 
						|
DIR *
 | 
						|
(*UnixOpenDir)(const char *pathname);
 | 
						|
typedef
 | 
						|
void
 | 
						|
(*UnixRewindDir)(DIR *dir);
 | 
						|
typedef
 | 
						|
struct dirent *
 | 
						|
(*UnixReadDir)(DIR *dir);
 | 
						|
typedef
 | 
						|
int
 | 
						|
(*UnixCloseDir)(DIR *dir);
 | 
						|
typedef
 | 
						|
int
 | 
						|
(*UnixStat)(const char *path, struct stat *buf);
 | 
						|
typedef
 | 
						|
int
 | 
						|
(*UnixStatFs)(const char *path, struct statfs *buf);
 | 
						|
typedef
 | 
						|
int
 | 
						|
(*UnixRename)(const char *oldpath, const char *newpath);
 | 
						|
typedef
 | 
						|
time_t
 | 
						|
(*UnixMkTime)(struct tm *tm);
 | 
						|
typedef
 | 
						|
int
 | 
						|
(*UnixFSync)(int fd);
 | 
						|
typedef
 | 
						|
int
 | 
						|
(*UnixChmod)(const char *path, mode_t mode);
 | 
						|
typedef
 | 
						|
int
 | 
						|
(*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);
 | 
						|
 | 
						|
typedef
 | 
						|
int
 | 
						|
(*UnixTcflush) (int fildes, int queue_selector);
 | 
						|
 | 
						|
typedef
 | 
						|
void
 | 
						|
(*UnixPerror) (__const char *__s);
 | 
						|
 | 
						|
typedef 
 | 
						|
int 
 | 
						|
(*UnixIoCtl) (int fd, unsigned long int __request, ...);
 | 
						|
 | 
						|
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);
 | 
						|
 | 
						|
typedef
 | 
						|
int 
 | 
						|
(*UnixTcgetattr) (int __fd, struct termios *__termios_p);
 | 
						|
 | 
						|
typedef 
 | 
						|
int 
 | 
						|
(*UnixTcsetattr) (int __fd, int __optional_actions,
 | 
						|
		      __const struct termios *__termios_p);
 | 
						|
 | 
						|
//
 | 
						|
//
 | 
						|
//
 | 
						|
 | 
						|
#define EFI_UNIX_THUNK_PROTOCOL_SIGNATURE EFI_SIGNATURE_32 ('L', 'N', 'X', 'T')
 | 
						|
 | 
						|
typedef struct _EFI_UNIX_THUNK_PROTOCOL {
 | 
						|
  UINT64                              Signature;
 | 
						|
 | 
						|
  UnixSleep                           Sleep;
 | 
						|
  UnixExit                    	      Exit;
 | 
						|
  UnixSetTimer                        SetTimer;
 | 
						|
  UnixGetLocalTime		                GetLocalTime;
 | 
						|
  UnixGmTime                          GmTime;
 | 
						|
  UnixGetTimeZone                     GetTimeZone;
 | 
						|
  UnixGetDayLight                     GetDayLight;
 | 
						|
  UnixPoll	                          Poll;
 | 
						|
  UnixRead                           Read;
 | 
						|
  UnixWrite                          Write;
 | 
						|
  UnixGetenv                         Getenv;
 | 
						|
  UnixOpen                           Open;
 | 
						|
  UnixSeek                           Lseek;
 | 
						|
  UnixFtruncate                      FTruncate;
 | 
						|
  UnixClose                          Close;
 | 
						|
  UnixMkdir                           MkDir;
 | 
						|
  UnixRmDir                           RmDir;
 | 
						|
  UnixUnLink                          UnLink;
 | 
						|
  UnixGetErrno                        GetErrno;
 | 
						|
  UnixOpenDir                         OpenDir;
 | 
						|
  UnixRewindDir                       RewindDir;
 | 
						|
  UnixReadDir                         ReadDir;
 | 
						|
  UnixCloseDir                        CloseDir;
 | 
						|
  UnixStat                            Stat;
 | 
						|
  UnixStatFs                          StatFs;
 | 
						|
  UnixRename                          Rename;
 | 
						|
  UnixMkTime                          MkTime;
 | 
						|
  UnixFSync                           FSync;
 | 
						|
  UnixChmod                           Chmod;
 | 
						|
  UnixUTime                           UTime;
 | 
						|
  UnixTcflush                         Tcflush;
 | 
						|
  UnixUgaCreate			                  UgaCreate;
 | 
						|
  UnixPerror                          Perror;
 | 
						|
  UnixIoCtl                           IoCtl;
 | 
						|
  UnixFcntl                           Fcntl;
 | 
						|
  UnixCfsetispeed                     Cfsetispeed;
 | 
						|
  UnixCfsetospeed                     Cfsetospeed;
 | 
						|
  UnixTcgetattr                       Tcgetattr;
 | 
						|
  UnixTcsetattr                       Tcsetattr;
 | 
						|
} EFI_UNIX_THUNK_PROTOCOL;
 | 
						|
 | 
						|
extern EFI_GUID gEfiUnixThunkProtocolGuid;
 | 
						|
 | 
						|
#endif
 |