refactor: page.c
This commit is contained in:
+65
-28
@@ -24,55 +24,92 @@
|
|||||||
|
|
||||||
/* ---- interne Typen (nur in dieser Datei sichtbar) ---- */
|
/* ---- interne Typen (nur in dieser Datei sichtbar) ---- */
|
||||||
|
|
||||||
typedef struct {
|
typedef struct
|
||||||
uint32_t page_id;
|
{
|
||||||
uint16_t num_slots;
|
uint32_t page_id;
|
||||||
uint16_t free_space_offset;
|
uint16_t num_slots;
|
||||||
|
uint16_t free_space_offset;
|
||||||
} PageHeader;
|
} PageHeader;
|
||||||
|
|
||||||
typedef struct {
|
typedef struct
|
||||||
uint16_t offset;
|
{
|
||||||
uint16_t length;
|
uint16_t offset;
|
||||||
|
uint16_t length;
|
||||||
} Slot;
|
} Slot;
|
||||||
|
|
||||||
/* oeffentliche Page-Struktur (opak nach aussen) */
|
/* oeffentliche Page-Struktur (opak nach aussen) */
|
||||||
struct Page {
|
struct Page
|
||||||
uint8_t raw[PAGE_SIZE];
|
{
|
||||||
|
uint8_t raw[PAGE_SIZE];
|
||||||
};
|
};
|
||||||
|
|
||||||
/* ---- Hilfsfunktionen ---- */
|
/* ---- Hilfsfunktionen ---- */
|
||||||
|
|
||||||
static PageHeader *header(Page *p) {
|
static PageHeader *
|
||||||
return (PageHeader *)p->raw;
|
header
|
||||||
|
(
|
||||||
|
Page *p
|
||||||
|
)
|
||||||
|
{
|
||||||
|
return (PageHeader *) p->raw;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ---- API ---- */
|
/* ---- API ---- */
|
||||||
|
|
||||||
Page *page_create(uint32_t page_id) {
|
Page *
|
||||||
Page *p = malloc(sizeof(Page));
|
page_create
|
||||||
if (!p) return NULL;
|
(
|
||||||
|
uint32_t page_id
|
||||||
|
)
|
||||||
|
{
|
||||||
|
Page *p = malloc(sizeof(Page));
|
||||||
|
if (!p)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
memset(p->raw, 0, PAGE_SIZE);
|
memset(p->raw, 0, PAGE_SIZE);
|
||||||
|
|
||||||
PageHeader *h = header(p);
|
PageHeader *h = header(p);
|
||||||
h->page_id = page_id;
|
h->page_id = page_id;
|
||||||
h->num_slots = 0;
|
h->num_slots = 0;
|
||||||
h->free_space_offset = PAGE_SIZE;
|
h->free_space_offset = PAGE_SIZE;
|
||||||
|
|
||||||
return p;
|
return p;
|
||||||
}
|
}
|
||||||
|
|
||||||
void page_free(Page *p) {
|
void
|
||||||
free(p);
|
page_free
|
||||||
|
(
|
||||||
|
Page *p
|
||||||
|
)
|
||||||
|
{
|
||||||
|
free(p);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* page_insert und page_get folgen im naechsten TDD-Zyklus */
|
/* page_insert und page_get folgen im naechsten TDD-Zyklus */
|
||||||
int page_insert(Page *p, const void *data, size_t len) {
|
int
|
||||||
(void)p; (void)data; (void)len;
|
page_insert
|
||||||
return -1; /* noch nicht implementiert */
|
(
|
||||||
|
Page *p,
|
||||||
|
const void *data,
|
||||||
|
size_t len
|
||||||
|
)
|
||||||
|
{
|
||||||
|
(void) p;
|
||||||
|
(void) data;
|
||||||
|
(void) len;
|
||||||
|
return -1; /* noch nicht implementiert */
|
||||||
}
|
}
|
||||||
|
|
||||||
void *page_get(Page *p, uint16_t slot_id, size_t *out_len) {
|
void *
|
||||||
(void)p; (void)slot_id; (void)out_len;
|
page_get
|
||||||
return NULL; /* noch nicht implementiert */
|
(
|
||||||
|
Page *p,
|
||||||
|
uint16_t slot_id,
|
||||||
|
size_t *out_len
|
||||||
|
)
|
||||||
|
{
|
||||||
|
(void) p;
|
||||||
|
(void) slot_id;
|
||||||
|
(void) out_len;
|
||||||
|
return NULL; /* noch nicht implementiert */
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user