mirror of https://github.com/tailix/libkernaux.git
Use assets in PFA
This commit is contained in:
parent
c397165dd4
commit
99b90a6ce7
|
@ -0,0 +1,10 @@
|
|||
#include <kernaux/assert.h>
|
||||
|
||||
#ifdef ENABLE_ASSERT
|
||||
#define assert(cond) kernaux_assert((cond))
|
||||
#else
|
||||
#define assert(cond) ((void)sizeof((cond)))
|
||||
#endif
|
||||
|
||||
#define assert_return(cond) { assert((cond)); if (!(cond)) return; }
|
||||
#define assert_retval(cond, val) { assert((cond)); if (!(cond)) return (val); }
|
14
src/pfa.c
14
src/pfa.c
|
@ -5,6 +5,8 @@
|
|||
#include <kernaux/pfa.h>
|
||||
#include <kernaux/stdlib.h>
|
||||
|
||||
#include "assert.h"
|
||||
|
||||
#define PAGE_INDEX(page_addr) ((page_addr) / KERNAUX_PFA_PAGE_SIZE)
|
||||
|
||||
#define FLAG_INDEX_FROM_INDEX(page_index) ((page_index) / 8)
|
||||
|
@ -39,12 +41,14 @@ __attribute__((nonnull));
|
|||
|
||||
void KernAux_PFA_initialize(const KernAux_PFA pfa)
|
||||
{
|
||||
assert(pfa);
|
||||
kernaux_memset(pfa->flags, 0, sizeof(pfa->flags));
|
||||
}
|
||||
|
||||
bool KernAux_PFA_is_available(const KernAux_PFA pfa, const size_t page_addr)
|
||||
{
|
||||
if (page_addr % KERNAUX_PFA_PAGE_SIZE != 0) return false;
|
||||
assert(pfa);
|
||||
assert_retval(page_addr % KERNAUX_PFA_PAGE_SIZE == 0, false);
|
||||
|
||||
return GET_FLAG_FROM_ADDR(pfa, page_addr);
|
||||
}
|
||||
|
@ -71,7 +75,8 @@ void KernAux_PFA_mark(
|
|||
size_t start,
|
||||
size_t end
|
||||
) {
|
||||
if (start >= end) return;
|
||||
assert(pfa);
|
||||
assert_return(start < end);
|
||||
|
||||
const size_t start_rem = start % KERNAUX_PFA_PAGE_SIZE;
|
||||
const size_t end_rem = (end + 1) % KERNAUX_PFA_PAGE_SIZE;
|
||||
|
@ -98,6 +103,8 @@ void KernAux_PFA_mark(
|
|||
|
||||
size_t KernAux_PFA_alloc_pages(const KernAux_PFA pfa, size_t mem_size)
|
||||
{
|
||||
assert(pfa);
|
||||
|
||||
const size_t mem_rem = mem_size % KERNAUX_PFA_PAGE_SIZE;
|
||||
|
||||
if (mem_rem != 0) {
|
||||
|
@ -135,7 +142,8 @@ void KernAux_PFA_free_pages(
|
|||
const size_t page_addr,
|
||||
size_t mem_size
|
||||
) {
|
||||
if (page_addr % KERNAUX_PFA_PAGE_SIZE != 0) return;
|
||||
assert(pfa);
|
||||
assert_return(page_addr % KERNAUX_PFA_PAGE_SIZE == 0);
|
||||
|
||||
const size_t mem_rem = mem_size % KERNAUX_PFA_PAGE_SIZE;
|
||||
|
||||
|
|
Loading…
Reference in New Issue