diff options
Diffstat (limited to 'boot/efi/kjarna_efi.h')
| -rw-r--r-- | boot/efi/kjarna_efi.h | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/boot/efi/kjarna_efi.h b/boot/efi/kjarna_efi.h new file mode 100644 index 0000000..ea9d3f1 --- /dev/null +++ b/boot/efi/kjarna_efi.h @@ -0,0 +1,37 @@ +#pragma once + +#include <posix/sys/types.h> + +#include <efi/types.h> +#include <efi/tables.h> + +#include "../kjarna.h" + +struct efi_context +{ + EFI_HANDLE const handle; + EFI_SYSTEM_TABLE * const system_table; +}; + +extern struct efi_context const *efi_context; +extern EFI_STATUS efi_errno; + +#define gST efi_context->system_table +#define gBS efi_context->system_table->BootServices + +void *efi_get_protocol(EFI_HANDLE handle, EFI_GUID *guid); +void efi_close_protocol(EFI_HANDLE handle, EFI_GUID *guid); + +int SYSV_ABI efi_open(const char *path, int flags, int mode); +int SYSV_ABI efi_close(int fd); +off_t SYSV_ABI efi_lseek(int fd, off_t offset, int whence); +ssize_t SYSV_ABI efi_read(int fd, void *buffer, size_t length); +ssize_t SYSV_ABI efi_write(int fd, const void *buffer, size_t length); + +void * SYSV_ABI efi_mmap(void *addr, size_t length, int prot, int flags, int fd, off_t offset); +int SYSV_ABI efi_munmap(void *addr, size_t length); + +void *efi_alloc_pool(size_t size); +void *efi_calloc_pool(size_t count, size_t size); +void efi_free_pool(void *block); + |
