/** @file This driver constructs User space wrappers for the EFI_*_PROTOCOLs. Copyright (c) 2024 - 2025, Mikhail Krichanov. All rights reserved. SPDX-License-Identifier: BSD-3-Clause **/ #include "UserSpace.h" EFI_STATUS EFIAPI UserSpaceBlockIoReset ( IN EFI_BLOCK_IO_PROTOCOL *This, IN BOOLEAN ExtendedVerification ) { return SysCall ( SysCallBlockIoReset, 2, This, ExtendedVerification ); } EFI_STATUS EFIAPI UserSpaceBlockIoRead ( IN EFI_BLOCK_IO_PROTOCOL *This, IN UINT32 MediaId, IN EFI_LBA Lba, IN UINTN BufferSize, OUT VOID *Buffer ) { return SysCall ( SysCallBlockIoRead, 5, This, MediaId, BufferSize, Buffer, Lba ); } EFI_STATUS EFIAPI UserSpaceBlockIoWrite ( IN EFI_BLOCK_IO_PROTOCOL *This, IN UINT32 MediaId, IN EFI_LBA Lba, IN UINTN BufferSize, IN VOID *Buffer ) { return SysCall ( SysCallBlockIoWrite, 5, This, MediaId, BufferSize, Buffer, Lba ); } EFI_STATUS EFIAPI UserSpaceBlockIoFlush ( IN EFI_BLOCK_IO_PROTOCOL *This ) { return SysCall ( SysCallBlockIoFlush, 1, This ); } EFI_STATUS EFIAPI UserSpaceDiskIoRead ( IN EFI_DISK_IO_PROTOCOL *This, IN UINT32 MediaId, IN UINT64 Offset, IN UINTN BufferSize, OUT VOID *Buffer ) { return SysCall ( SysCallDiskIoRead, 5, This, MediaId, BufferSize, Buffer, Offset ); } EFI_STATUS EFIAPI UserSpaceDiskIoWrite ( IN EFI_DISK_IO_PROTOCOL *This, IN UINT32 MediaId, IN UINT64 Offset, IN UINTN BufferSize, IN VOID *Buffer ) { return SysCall ( SysCallDiskIoWrite, 5, This, MediaId, BufferSize, Buffer, Offset ); } INTN EFIAPI UserSpaceUnicodeStriColl ( IN EFI_UNICODE_COLLATION_PROTOCOL *This, IN CHAR16 *Str1, IN CHAR16 *Str2 ) { return (INTN)SysCall ( SysCallUnicodeStriColl, 3, This, Str1, Str2 ); } BOOLEAN EFIAPI UserSpaceUnicodeMetaiMatch ( IN EFI_UNICODE_COLLATION_PROTOCOL *This, IN CHAR16 *String, IN CHAR16 *Pattern ) { return (BOOLEAN)SysCall ( SysCallUnicodeMetaiMatch, 3, This, String, Pattern ); } VOID EFIAPI UserSpaceUnicodeStrLwr ( IN EFI_UNICODE_COLLATION_PROTOCOL *This, IN OUT CHAR16 *Str ) { SysCall ( SysCallUnicodeStrLwr, 2, This, Str ); } VOID EFIAPI UserSpaceUnicodeStrUpr ( IN EFI_UNICODE_COLLATION_PROTOCOL *This, IN OUT CHAR16 *Str ) { SysCall ( SysCallUnicodeStrUpr, 2, This, Str ); } VOID EFIAPI UserSpaceUnicodeFatToStr ( IN EFI_UNICODE_COLLATION_PROTOCOL *This, IN UINTN FatSize, IN CHAR8 *Fat, OUT CHAR16 *String ) { SysCall ( SysCallUnicodeFatToStr, 4, This, FatSize, Fat, String ); } BOOLEAN EFIAPI UserSpaceUnicodeStrToFat ( IN EFI_UNICODE_COLLATION_PROTOCOL *This, IN CHAR16 *String, IN UINTN FatSize, OUT CHAR8 *Fat ) { return (BOOLEAN)SysCall ( SysCallUnicodeStrToFat, 4, This, String, FatSize, Fat ); }