1
0
Fork 0
mirror of https://github.com/tailix/libkernaux.git synced 2025-02-17 15:45:32 -05:00
libkernaux/include/kernaux/pfa.h

37 lines
881 B
C
Raw Normal View History

#ifndef KERNAUX_INCLUDED_PFA
2021-12-20 11:17:53 +05:00
#define KERNAUX_INCLUDED_PFA
2020-11-27 14:28:13 +05:00
2021-12-14 01:46:58 +05:00
#ifdef __cplusplus
extern "C" {
#endif
2020-12-06 15:16:15 +05:00
#include <stdbool.h>
#include <stddef.h>
2021-12-18 00:22:28 +05:00
#include <stdint.h>
#define KERNAUX_PFA_PAGE_SIZE (4 * 1024)
#define KERNAUX_PFA_PAGES_COUNT_MAX (1024 * 1024)
2021-12-14 23:41:11 +05:00
#define KERNAUX_PFA_FLAGS_SIZE (KERNAUX_PFA_PAGES_COUNT_MAX / 8)
2021-12-14 04:03:13 +05:00
typedef struct KernAux_PFA *KernAux_PFA;
struct KernAux_PFA {
2021-12-18 00:22:28 +05:00
uint8_t flags[KERNAUX_PFA_FLAGS_SIZE];
};
2021-12-15 03:10:28 +05:00
void KernAux_PFA_initialize(KernAux_PFA pfa);
2021-12-15 03:10:28 +05:00
bool KernAux_PFA_is_available(KernAux_PFA pfa, size_t page_addr);
2021-12-14 04:10:05 +05:00
2021-12-15 03:10:28 +05:00
void KernAux_PFA_mark_available(KernAux_PFA pfa, size_t start, size_t end);
void KernAux_PFA_mark_unavailable(KernAux_PFA pfa, size_t start, size_t end);
2021-12-15 03:10:28 +05:00
size_t KernAux_PFA_alloc_pages(KernAux_PFA pfa, size_t mem_size);
void KernAux_PFA_free_pages(KernAux_PFA pfa, size_t page_addr, size_t mem_size);
2020-11-27 14:28:13 +05:00
#ifdef __cplusplus
}
#endif
#endif