summaryrefslogtreecommitdiff
path: root/UnixPkg/Include/Protocol
diff options
context:
space:
mode:
Diffstat (limited to 'UnixPkg/Include/Protocol')
-rw-r--r--UnixPkg/Include/Protocol/UnixIo.h142
-rw-r--r--UnixPkg/Include/Protocol/UnixThunk.h244
-rw-r--r--UnixPkg/Include/Protocol/UnixUgaIo.h72
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