/** @file | |
Copyright (c) 2008-2009, Apple Inc. All rights reserved. | |
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. | |
**/ | |
#ifdef __APPLE__ | |
#include "SecMain.h" | |
#include "Gasket.h" | |
// | |
// Gasket functions for EFI_UNIX_THUNK_PROTOCOL | |
// | |
void | |
GasketmsSleep (unsigned long Milliseconds) | |
{ | |
GasketUintn (msSleep, Milliseconds); | |
return; | |
} | |
void | |
Gasketexit (int status) | |
{ | |
GasketUintn (exit, status); | |
return; | |
} | |
void | |
GasketSetTimer (UINT64 PeriodMs, VOID (*CallBack)(UINT64 DeltaMs)) | |
{ | |
GasketUint64Uintn (SetTimer, PeriodMs, (UINTN)CallBack); | |
return; | |
} | |
void | |
GasketGetLocalTime (EFI_TIME *Time) | |
{ | |
GasketUintn (GetLocalTime, (UINTN)Time); | |
return; | |
} | |
struct tm * | |
Gasketgmtime (const time_t *clock) | |
{ | |
return (struct tm *)(UINTN)GasketUintn (localtime, (UINTN)clock); | |
} | |
long | |
GasketGetTimeZone (void) | |
{ | |
return GasketVoid (GetTimeZone); | |
} | |
int | |
GasketGetDayLight (void) | |
{ | |
return GasketVoid (GetDayLight); | |
} | |
int | |
Gasketpoll (struct pollfd *pfd, int nfds, int timeout) | |
{ | |
return GasketUintnUintnUintn (poll, (UINTN)pfd, nfds, timeout); | |
} | |
int | |
Gasketread (int fd, void *buf, int count) | |
{ | |
return GasketUintnUintnUintn (read, fd, (UINTN)buf, count); | |
} | |
int | |
Gasketwrite (int fd, const void *buf, int count) | |
{ | |
return GasketUintnUintnUintn (write, fd, (UINTN)buf, count); | |
} | |
char * | |
Gasketgetenv (const char *name) | |
{ | |
return (char *)(UINTN)GasketUintn (getenv, (UINTN)name); | |
} | |
int | |
Gasketopen (const char *name, int flags, int mode) | |
{ | |
return GasketUintnUintnUintn (open, (UINTN)name, flags, mode); | |
} | |
off_t | |
Gasketlseek (int fd, off_t off, int whence) | |
{ | |
if (sizeof off == 8) { | |
return GasketUintnUint64Uintn (lseek, fd, off, whence); | |
} else if (sizeof off == 4) { | |
return GasketUintnUintnUintn (lseek, fd, off, whence); | |
} | |
} | |
int | |
Gasketftruncate (int fd, long int len) | |
{ | |
return GasketUintnUintn (ftruncate, fd, len); | |
} | |
int | |
Gasketclose (int fd) | |
{ | |
return GasketUintn (close, fd); | |
} | |
int | |
Gasketmkdir (const char *pathname, mode_t mode) | |
{ | |
return GasketUintnUint16 (mkdir, (UINTN)pathname, mode); | |
} | |
int | |
Gasketrmdir (const char *pathname) | |
{ | |
return GasketUintn (rmdir, (UINTN)pathname); | |
} | |
int | |
Gasketunlink (const char *pathname) | |
{ | |
return GasketUintn (unlink, (UINTN)pathname); | |
} | |
int | |
GasketGetErrno (void) | |
{ | |
return GasketVoid (GetErrno); | |
} | |
DIR * | |
Gasketopendir (const char *pathname) | |
{ | |
return (DIR *)(UINTN)GasketUintn (opendir, (UINTN)pathname); | |
} | |
void * | |
Gasketrewinddir (DIR *dir) | |
{ | |
return (void *)(UINTN)GasketUintn (rewinddir, (UINTN)dir); | |
} | |
struct dirent * | |
Gasketreaddir (DIR *dir) | |
{ | |
return (struct dirent *)(UINTN)GasketUintn (readdir, (UINTN)dir); | |
} | |
int | |
Gasketclosedir (DIR *dir) | |
{ | |
return GasketUintn (closedir, (UINTN)dir); | |
} | |
int | |
Gasketstat (const char *path, STAT_FIX *buf) | |
{ | |
return GasketUintnUintn (stat, (UINTN)path, (UINTN)buf); | |
} | |
int | |
Gasketstatfs (const char *path, struct statfs *buf) | |
{ | |
return GasketUintnUintn (statfs, (UINTN)path, (UINTN)buf); | |
} | |
int | |
Gasketrename (const char *oldpath, const char *newpath) | |
{ | |
return GasketUintnUintn (rename, (UINTN)oldpath, (UINTN)newpath); | |
} | |
time_t | |
Gasketmktime (struct tm *tm) | |
{ | |
return GasketUintn (mktime, (UINTN)tm); | |
} | |
int | |
Gasketfsync (int fd) | |
{ | |
return GasketUintn (fsync, fd); | |
} | |
int | |
Gasketchmod (const char *path, mode_t mode) | |
{ | |
return GasketUintnUint16 (chmod, (UINTN)path, mode); | |
} | |
int | |
Gasketutime (const char *filename, const struct utimbuf *buf) | |
{ | |
return GasketUintnUintn (utime, (UINTN)filename, (UINTN)buf); | |
} | |
int | |
Gaskettcflush (int fildes, int queue_selector) | |
{ | |
return GasketUintnUintn (tcflush, fildes, queue_selector); | |
} | |
EFI_STATUS | |
GasketUgaCreate (struct _EFI_UNIX_UGA_IO_PROTOCOL **UgaIo, CONST CHAR16 *Title) | |
{ | |
return GasketUintnUintn (UgaCreate, (UINTN)UgaIo, (UINTN)Title); | |
} | |
void | |
Gasketperror (__const char *__s) | |
{ | |
GasketUintn (perror, (UINTN)__s); | |
return; | |
} | |
// | |
// ... is always an int or pointer to device specific data structure | |
// | |
int | |
Gasketioctl (int fd, unsigned long int __request, ...) | |
{ | |
VA_LIST Marker; | |
VA_START (Marker, __request); | |
return GasketUintnUintnUintn (ioctl, fd, __request, VA_ARG (Marker, UINTN)); | |
} | |
int | |
Gasketfcntl (int __fd, int __cmd, ...) | |
{ | |
VA_LIST Marker; | |
VA_START (Marker, __cmd); | |
return GasketUintnUintnUintn (fcntl, __fd, __cmd, VA_ARG (Marker, UINTN)); | |
} | |
int | |
Gasketcfsetispeed (struct termios *__termios_p, speed_t __speed) | |
{ | |
return GasketUintnUintn (cfsetispeed, (UINTN)__termios_p, __speed); | |
} | |
int | |
Gasketcfsetospeed (struct termios *__termios_p, speed_t __speed) | |
{ | |
return GasketUintnUintn (cfsetospeed, (UINTN)__termios_p, __speed); | |
} | |
int | |
Gaskettcgetattr (int __fd, struct termios *__termios_p) | |
{ | |
return GasketUintnUintn (tcgetattr, __fd, (UINTN)__termios_p); | |
} | |
int | |
Gaskettcsetattr (int __fd, int __optional_actions, __const struct termios *__termios_p) | |
{ | |
return GasketUintnUintnUintn (tcsetattr, __fd, __optional_actions, (UINTN)__termios_p); | |
} | |
int | |
Gasketsigaction (int sig, const struct sigaction *act, struct sigaction *oact) | |
{ | |
return GasketUintnUintn (sigaction, (UINTN)act, (UINTN)oact); | |
} | |
int | |
Gasketsetcontext (const ucontext_t *ucp) | |
{ | |
return GasketUintn (setcontext, (UINTN)ucp); | |
} | |
int | |
Gasketgetcontext (ucontext_t *ucp) | |
{ | |
return GasketUintn (getcontext, (UINTN)ucp); | |
} | |
int | |
Gasketsigemptyset (sigset_t *set) | |
{ | |
return GasketUintn (sigemptyset, (UINTN)set); | |
} | |
int | |
Gasketsigaltstack (const stack_t *ss, stack_t *oss) | |
{ | |
return GasketUintnUintn (sigaltstack, (UINTN)ss, (UINTN)oss); | |
} | |
RETURN_STATUS | |
GasketUnixPeCoffGetEntryPoint ( | |
IN VOID *Pe32Data, | |
IN OUT VOID **EntryPoint | |
) | |
{ | |
return GasketUintnUintn (SecPeCoffGetEntryPoint, (UINTN)Pe32Data, (UINTN)EntryPoint); | |
} | |
VOID | |
GasketUnixPeCoffRelocateImageExtraAction ( | |
IN OUT PE_COFF_LOADER_IMAGE_CONTEXT *ImageContext | |
) | |
{ | |
GasketUintn (SecPeCoffRelocateImageExtraAction, (UINTN)ImageContext); | |
return; | |
} | |
VOID | |
GasketPeCoffLoaderUnloadImageExtraAction ( | |
IN OUT PE_COFF_LOADER_IMAGE_CONTEXT *ImageContext | |
) | |
{ | |
GasketUintn (SecPeCoffLoaderUnloadImageExtraAction, (UINTN)ImageContext); | |
return; | |
} | |
// | |
// Gasket functions for EFI_UNIX_UGA_IO_PROTOCOL | |
// | |
EFI_STATUS | |
EFIAPI | |
GasketUgaClose (EFI_UNIX_UGA_IO_PROTOCOL *UgaIo) | |
{ | |
return GasketUintn (UgaClose, (UINTN)UgaIo); | |
} | |
EFI_STATUS | |
EFIAPI | |
GasketUgaSize (EFI_UNIX_UGA_IO_PROTOCOL *UgaIo, UINT32 Width, UINT32 Height) | |
{ | |
return GasketUintnUintnUintn (UgaSize, (UINTN)UgaIo, Width, Height); | |
} | |
EFI_STATUS | |
EFIAPI | |
GasketUgaCheckKey (EFI_UNIX_UGA_IO_PROTOCOL *UgaIo) | |
{ | |
return GasketUintn (UgaCheckKey, (UINTN)UgaIo); | |
} | |
EFI_STATUS | |
EFIAPI | |
GasketUgaGetKey (EFI_UNIX_UGA_IO_PROTOCOL *UgaIo, EFI_INPUT_KEY *key) | |
{ | |
return GasketUintnUintn (UgaGetKey, (UINTN)UgaIo, (UINTN)key); | |
} | |
EFI_STATUS | |
EFIAPI | |
GasketUgaBlt ( | |
EFI_UNIX_UGA_IO_PROTOCOL *UgaIo, | |
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 | |
) | |
{ | |
return GasketUintn10Args (UgaBlt, (UINTN)UgaIo, (UINTN)BltBuffer, BltOperation, SourceX, SourceY, DestinationX, DestinationY, Width, Height, Delta); | |
} | |
#endif | |