mirror of https://github.com/acidanthera/audk.git
436 lines
8.1 KiB
C
436 lines
8.1 KiB
C
/** @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
|
|
|