diff options
Diffstat (limited to 'UnixPkg/Include/Protocol')
-rw-r--r-- | UnixPkg/Include/Protocol/UnixIo.h | 142 | ||||
-rw-r--r-- | UnixPkg/Include/Protocol/UnixThunk.h | 244 | ||||
-rw-r--r-- | UnixPkg/Include/Protocol/UnixUgaIo.h | 72 |
3 files changed, 458 insertions, 0 deletions
diff --git a/UnixPkg/Include/Protocol/UnixIo.h b/UnixPkg/Include/Protocol/UnixIo.h new file mode 100644 index 0000000000..1758ecb7c4 --- /dev/null +++ b/UnixPkg/Include/Protocol/UnixIo.h @@ -0,0 +1,142 @@ +/*++
+
+Copyright (c) 2004 - 2006, 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:
+
+ UnixIo.h
+
+Abstract:
+
+--*/
+
+#ifndef _UNIX_IO_H_
+#define _UNIX_IO_H_
+
+#define EFI_UNIX_IO_PROTOCOL_GUID \
+ { \
+ 0xf2e23f54, 0x8985, 0x11db, {0xac, 0x79, 0x00, 0x40, 0xd0, 0x2b, 0x18, 0x35 } \ + }
+
+typedef struct {
+ EFI_UNIX_THUNK_PROTOCOL *UnixThunk;
+ EFI_GUID *TypeGuid;
+ UINT16 *EnvString;
+ UINT16 InstanceNumber;
+} EFI_UNIX_IO_PROTOCOL;
+
+extern EFI_GUID gEfiUnixIoProtocolGuid;
+
+//
+// The following GUIDs are used in EFI_UNIX_IO_PROTOCOL_GUID
+// Device paths. They map 1:1 with UNIX envirnment variables. The variables
+// define what virtual hardware the emulator/UnixBusDriver will produce.
+//
+//
+// EFI_UNIX_VIRTUAL_DISKS
+//
+#define EFI_UNIX_VIRTUAL_DISKS_GUID \
+ { \
+ 0xf2ba331a, 0x8985, 0x11db, {0xa4, 0x06, 0x00, 0x40, 0xd0, 0x2b, 0x18, 0x35 } \ + }
+
+extern EFI_GUID gEfiUnixVirtualDisksGuid;
+
+//
+// EFI_UNIX_PHYSICAL_DISKS
+//
+#define EFI_UNIX_PHYSICAL_DISKS_GUID \
+ { \
+ 0xf2bdcc96, 0x8985, 0x11db, {0x87, 0x19, 0x00, 0x40, 0xd0, 0x2b, 0x18, 0x35 } \ + }
+
+extern EFI_GUID gEfiUnixPhysicalDisksGuid;
+
+//
+// EFI_UNIX_FILE_SYSTEM
+//
+#define EFI_UNIX_FILE_SYSTEM_GUID \
+ { \
+ 0xf2c16b9e, 0x8985, 0x11db, {0x92, 0xc8, 0x00, 0x40, 0xd0, 0x2b, 0x18, 0x35 } \ + }
+
+extern EFI_GUID gEfiUnixFileSystemGuid;
+
+//
+// EFI_WIN_NT_SERIAL_PORT
+//
+#define EFI_UNIX_SERIAL_PORT_GUID \
+ { \
+ 0x6d3a727d, 0x66c8, 0x4d19, {0x87, 0xe6, 0x2, 0x15, 0x86, 0x14, 0x90, 0xf3} \
+ }
+
+extern EFI_GUID gEfiUnixSerialPortGuid;
+
+//
+// EFI_UNIX_UGA
+//
+#define EFI_UNIX_UGA_GUID \
+ { \
+ 0xf2c8b80e, 0x8985, 0x11db, {0x93, 0xf1, 0x00, 0x40, 0xd0, 0x2b, 0x18, 0x35 } \ + }
+
+extern EFI_GUID gEfiUnixUgaGuid;
+
+//
+// EFI_UNIX_GOP
+//
+#define EFI_UNIX_GOP_GUID \
+ { \
+ 0xbace07c2, 0x8987, 0x11db, {0xa5, 0x9a, 0x00, 0x40, 0xd0, 0x2b, 0x18, 0x35 } \ + }
+
+extern EFI_GUID gEfiUnixGopGuid;
+
+//
+// EFI_UNIX_CONSOLE
+//
+#define EFI_UNIX_CONSOLE_GUID \
+ { \
+ 0xf2cc5d06, 0x8985, 0x11db, {0xbb, 0x19, 0x00, 0x40, 0xd0, 0x2b, 0x18, 0x35 } \ + }
+
+extern EFI_GUID gEfiUnixConsoleGuid;
+
+//
+// EFI_UNIX_MEMORY
+//
+#define EFI_UNIX_MEMORY_GUID \
+ { \
+ 0xf2d006cc, 0x8985, 0x11db, {0xa4, 0x72, 0x00, 0x40, 0xd0, 0x2b, 0x18, 0x35 } \ + }
+
+extern EFI_GUID gEfiUnixMemoryGuid;
+
+//
+// EFI_UNIX_CPU_MODEL
+//
+#define EFI_UNIX_CPU_MODEL_GUID \
+ { \
+ 0xf2d3b330, 0x8985, 0x11db, {0x8a, 0xa3, 0x00, 0x40, 0xd0, 0x2b, 0x18, 0x35 } \ + }
+
+extern EFI_GUID gEfiUnixCPUModelGuid;
+
+//
+// EFI_UNIX_CPU_SPEED
+//
+#define EFI_UNIX_CPU_SPEED_GUID \
+ { \
+ 0xf2d74e5a, 0x8985, 0x11db, {0x97, 0x05, 0x00, 0x40, 0xd0, 0x2b, 0x18, 0x35 } \ + }
+
+extern EFI_GUID gEfiUnixCPUSpeedGuid;
+
+#endif
diff --git a/UnixPkg/Include/Protocol/UnixThunk.h b/UnixPkg/Include/Protocol/UnixThunk.h new file mode 100644 index 0000000000..a0908a0c45 --- /dev/null +++ b/UnixPkg/Include/Protocol/UnixThunk.h @@ -0,0 +1,244 @@ +/*++ + +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> +#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> + +#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 diff --git a/UnixPkg/Include/Protocol/UnixUgaIo.h b/UnixPkg/Include/Protocol/UnixUgaIo.h new file mode 100644 index 0000000000..63e80bea32 --- /dev/null +++ b/UnixPkg/Include/Protocol/UnixUgaIo.h @@ -0,0 +1,72 @@ +/*++ + +Copyright (c) 2006, Tristan Gingold +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: + + UnixUgaIo.h + +Abstract: + +--*/ + +#ifndef _UNIX_UGA_IO_H_ +#define _UNIX_UGA_IO_H_ + +#define EFI_UNIX_UGA_IO_PROTOCOL_GUID \ + { \ + 0xf2e5e2c6, 0x8985, 0x11db, {0xa1, 0x91, 0x00, 0x40, 0xd0, 0x2b, 0x18, 0x35 } \ + } + +struct _EFI_UNIX_UGA_IO_PROTOCOL; +typedef struct _EFI_UNIX_UGA_IO_PROTOCOL EFI_UNIX_UGA_IO_PROTOCOL; + +typedef +EFI_STATUS +(*UGAClose)(EFI_UNIX_UGA_IO_PROTOCOL *Uga); + +typedef +EFI_STATUS +(*UGASize)(EFI_UNIX_UGA_IO_PROTOCOL *Uga, UINT32 Width, UINT32 Height); + +typedef +EFI_STATUS +(*UGACheckKey)(EFI_UNIX_UGA_IO_PROTOCOL *Uga); + +typedef +EFI_STATUS +(*UGAGetKey)(EFI_UNIX_UGA_IO_PROTOCOL *Uga, EFI_INPUT_KEY *key); + +typedef +EFI_STATUS +(*UGABlt)(EFI_UNIX_UGA_IO_PROTOCOL *Uga, + IN EFI_UGA_PIXEL *BltBuffer OPTIONAL, + IN EFI_UGA_BLT_OPERATION BltOperation, + IN UINTN SourceX, + IN UINTN SourceY, + IN UINTN DestinationX, + IN UINTN DestinationY, + IN UINTN Width, + IN UINTN Height, + IN UINTN Delta OPTIONAL); + +struct _EFI_UNIX_UGA_IO_PROTOCOL { + VOID *Private; + UGAClose UgaClose; + UGASize UgaSize; + UGACheckKey UgaCheckKey; + UGAGetKey UgaGetKey; + UGABlt UgaBlt; +}; + + +extern EFI_GUID gEfiUnixUgaIoProtocolGuid; + +#endif |