mirror of
https://github.com/tailix/libkernaux.git
synced 2024-11-13 11:04:27 -05:00
Remove PFA code
This commit is contained in:
parent
8599102102
commit
377e05f4f8
3 changed files with 0 additions and 144 deletions
|
@ -1,55 +1,10 @@
|
|||
#ifndef KERNAUX_INCLUDED_PFA
|
||||
#define KERNAUX_INCLUDED_PFA 1
|
||||
|
||||
#include <kernaux/stdlib.h>
|
||||
|
||||
#define KERNAUX_PFA_PAGE_SIZE (4 * 1024)
|
||||
#define KERNAUX_PFA_ZONES_COUNT_MAX 10
|
||||
#define KERNAUX_PFA_ZONE_NAME_SIZE_MAX 256
|
||||
#define KERNAUX_PFA_ZONE_NAME_SLEN_MAX (KERNAUX_PFA_ZONE_NAME_SIZE_MAX - 1)
|
||||
#define KERNAUX_PFA_ZONE_PAGES_COUNT_MAX (1024 * 1024)
|
||||
#define KERNAUX_PFA_ZONE_PAGE_LIST_SIZE (KERNAUX_PFA_ZONE_PAGES_COUNT_MAX / 8)
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
struct KernAux_PFA_Zone {
|
||||
char name[KERNAUX_PFA_ZONE_NAME_SIZE_MAX];
|
||||
|
||||
unsigned long long start;
|
||||
unsigned long long end;
|
||||
unsigned long long size;
|
||||
|
||||
unsigned char pages[KERNAUX_PFA_ZONE_PAGE_LIST_SIZE];
|
||||
unsigned int pages_count;
|
||||
};
|
||||
|
||||
struct KernAux_PFA {
|
||||
kernaux_bool initialized;
|
||||
|
||||
struct KernAux_PFA_Zone zones[KERNAUX_PFA_ZONES_COUNT_MAX];
|
||||
unsigned int zones_count;
|
||||
};
|
||||
|
||||
kernaux_bool KernAux_PFA_initialize_start(
|
||||
struct KernAux_PFA *pfa
|
||||
)
|
||||
__attribute__((nonnull));
|
||||
|
||||
kernaux_bool KernAux_PFA_initialize_add_zone(
|
||||
struct KernAux_PFA *pfa,
|
||||
const char *name,
|
||||
unsigned long long start,
|
||||
unsigned long long end
|
||||
)
|
||||
__attribute__((nonnull));
|
||||
|
||||
kernaux_bool KernAux_PFA_initialize_finish(
|
||||
struct KernAux_PFA *pfa
|
||||
)
|
||||
__attribute__((nonnull));
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
|
72
src/pfa.c
72
src/pfa.c
|
@ -1,75 +1,3 @@
|
|||
#include "config.h"
|
||||
|
||||
#include <kernaux/pfa.h>
|
||||
#include <kernaux/stdlib.h>
|
||||
|
||||
kernaux_bool KernAux_PFA_initialize_start(
|
||||
struct KernAux_PFA *const pfa
|
||||
) {
|
||||
if (pfa->initialized) {
|
||||
return KERNAUX_FALSE;
|
||||
}
|
||||
|
||||
for (unsigned long long i = 0; i < sizeof(*pfa); ++i) {
|
||||
*((unsigned char*)pfa + i) = 0;
|
||||
}
|
||||
|
||||
pfa->zones_count = 0;
|
||||
|
||||
return KERNAUX_TRUE;
|
||||
}
|
||||
|
||||
kernaux_bool KernAux_PFA_initialize_add_zone(
|
||||
struct KernAux_PFA *const pfa,
|
||||
const char *const name,
|
||||
const unsigned long long start,
|
||||
const unsigned long long end
|
||||
) {
|
||||
if (pfa->initialized) {
|
||||
return KERNAUX_FALSE;
|
||||
}
|
||||
|
||||
if (pfa->zones_count >= KERNAUX_PFA_ZONES_COUNT_MAX) {
|
||||
return KERNAUX_FALSE;
|
||||
}
|
||||
|
||||
if (start >= end) {
|
||||
return KERNAUX_FALSE;
|
||||
}
|
||||
|
||||
if (start % KERNAUX_PFA_PAGE_SIZE != 0) {
|
||||
return KERNAUX_FALSE;
|
||||
}
|
||||
|
||||
if ((end + 1) % KERNAUX_PFA_PAGE_SIZE != 0) {
|
||||
return KERNAUX_FALSE;
|
||||
}
|
||||
|
||||
const unsigned int name_slen = kernaux_strlen(name);
|
||||
|
||||
if (name_slen > KERNAUX_PFA_ZONE_NAME_SLEN_MAX) {
|
||||
return KERNAUX_FALSE;
|
||||
}
|
||||
|
||||
struct KernAux_PFA_Zone *const zone = &pfa->zones[pfa->zones_count++];
|
||||
|
||||
kernaux_strncpy(zone->name, name, name_slen);
|
||||
|
||||
zone->start = start;
|
||||
zone->end = end;
|
||||
zone->size = end - start + 1;
|
||||
|
||||
return KERNAUX_TRUE;
|
||||
}
|
||||
|
||||
kernaux_bool KernAux_PFA_initialize_finish(
|
||||
struct KernAux_PFA *const pfa
|
||||
) {
|
||||
if (pfa->initialized) {
|
||||
return KERNAUX_FALSE;
|
||||
}
|
||||
|
||||
pfa->initialized = KERNAUX_TRUE;
|
||||
|
||||
return KERNAUX_TRUE;
|
||||
}
|
||||
|
|
|
@ -4,32 +4,5 @@
|
|||
|
||||
int main()
|
||||
{
|
||||
struct KernAux_PFA pfa;
|
||||
|
||||
assert(KernAux_PFA_initialize_start(&pfa));
|
||||
|
||||
assert(KernAux_PFA_initialize_add_zone(
|
||||
&pfa,
|
||||
"foo",
|
||||
0,
|
||||
16 * 1024 * 1024 - 1
|
||||
));
|
||||
|
||||
assert(KernAux_PFA_initialize_add_zone(
|
||||
&pfa,
|
||||
"bar",
|
||||
16 * 1024 * 1024,
|
||||
896 * 1024 * 1024 - 1
|
||||
));
|
||||
|
||||
assert(KernAux_PFA_initialize_add_zone(
|
||||
&pfa,
|
||||
"car",
|
||||
896 * 1024 * 1024,
|
||||
(unsigned long long)4 * 1024 * 1024 * 1024 - 1
|
||||
));
|
||||
|
||||
assert(KernAux_PFA_initialize_finish(&pfa));
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue