diff options
| author | Ada Christine <adachristine18@gmail.com> | 2024-02-11 23:48:04 +0000 |
|---|---|---|
| committer | Ada Christine <adachristine18@gmail.com> | 2024-02-11 23:48:04 +0000 |
| commit | 3f9278b48ff4bc0d2cf1604034b3bba548572f04 (patch) | |
| tree | dbdabed3ff580079d2e21045d2cbc5b274c2e418 /kjarna/kjarna_efi.h | |
| parent | 9fbfc6e951e565ef98c49c1dcfc4b6a39514f17d (diff) | |
kjarna initial impl
Diffstat (limited to 'kjarna/kjarna_efi.h')
| -rw-r--r-- | kjarna/kjarna_efi.h | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/kjarna/kjarna_efi.h b/kjarna/kjarna_efi.h new file mode 100644 index 0000000..e24cc7f --- /dev/null +++ b/kjarna/kjarna_efi.h @@ -0,0 +1,38 @@ +#pragma once + +#include <posix/sys/types.h> + +#include <efi/types.h> +#include <efi/tables.h> + +#include <kjarna/interface.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); + +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); + +int runtime_start(void); + |
