summaryrefslogtreecommitdiff
path: root/kjarna/efi/kjarna_efi.h
blob: ea9d3f157a221c05809d4f79814e5a2628051aeb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
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);