Use macros in PFA

This commit is contained in:
Alex Kotov 2021-12-15 00:01:23 +05:00
parent 94e58914fd
commit 6d8e8eea2e
Signed by: kotovalexarian
GPG Key ID: 553C0EBBEB5D5F08
1 changed files with 11 additions and 8 deletions

View File

@ -22,6 +22,13 @@
(!!((pfa)->flags[FLAG_INDEX_FROM_ADDR(page_addr)] & \
FLAG_MASK_FROM_ADDR(page_addr)))
#define FLAG_TRUE_FROM_INDEX(pfa, page_index) \
((pfa)->flags[FLAG_INDEX_FROM_INDEX(page_index)] |= \
FLAG_MASK_FROM_INDEX(page_index))
#define FLAG_FALSE_FROM_INDEX(pfa, page_index) \
((pfa)->flags[FLAG_INDEX_FROM_INDEX(page_index)] &= \
~FLAG_MASK_FROM_INDEX(page_index))
static void KernAux_PFA_mark(
KernAux_PFA pfa,
bool status,
@ -82,11 +89,9 @@ void KernAux_PFA_mark(
for (size_t index = start_index; index <= end_index; ++index) {
if (status) {
pfa->flags[FLAG_INDEX_FROM_INDEX(index)] |=
FLAG_MASK_FROM_INDEX(index);
FLAG_TRUE_FROM_INDEX(pfa, index);
} else {
pfa->flags[FLAG_INDEX_FROM_INDEX(index)] &=
~FLAG_MASK_FROM_INDEX(index);
FLAG_FALSE_FROM_INDEX(pfa, index);
}
}
}
@ -116,8 +121,7 @@ size_t KernAux_PFA_alloc_pages(const KernAux_PFA pfa, size_t mem_size)
if (index - start + 1 == pages_count) {
for (; index >= start; --index) {
pfa->flags[FLAG_INDEX_FROM_INDEX(index)] &=
~FLAG_MASK_FROM_INDEX(index);
FLAG_FALSE_FROM_INDEX(pfa, index);
}
return start * KERNAUX_PFA_PAGE_SIZE;
}
@ -143,7 +147,6 @@ void KernAux_PFA_free_pages(
const size_t pages_count = mem_size / KERNAUX_PFA_PAGE_SIZE;
for (size_t index = 0; index < pages_count; ++index) {
pfa->flags[FLAG_INDEX_FROM_INDEX(start_index + index)] |=
FLAG_MASK_FROM_INDEX(start_index + index);
FLAG_TRUE_FROM_INDEX(pfa, start_index + index);
}
}