heap_free_page returns true if page was successfully deleted
This commit is contained in:
10
lib/heap.c
10
lib/heap.c
@@ -31,17 +31,17 @@ void heap_create(heap_t *heap)
|
||||
heap->pages = 0;
|
||||
}
|
||||
|
||||
void heap_free_page(heap_t *heap, page_t *page)
|
||||
bool heap_free_page(heap_t *heap, page_t *page)
|
||||
{
|
||||
if (!page || !heap)
|
||||
return;
|
||||
return false;
|
||||
|
||||
if (page == heap->beg)
|
||||
{
|
||||
heap->beg = heap->beg->next;
|
||||
page_delete(page);
|
||||
--heap->pages;
|
||||
return;
|
||||
return true;
|
||||
}
|
||||
|
||||
page_t *prev = NULL, *next = NULL, *cur = NULL;
|
||||
@@ -55,7 +55,7 @@ void heap_free_page(heap_t *heap, page_t *page)
|
||||
|
||||
if (!cur)
|
||||
// Couldn't find the page
|
||||
return;
|
||||
return false;
|
||||
// Page was found
|
||||
prev->next = next;
|
||||
if (!next)
|
||||
@@ -63,6 +63,8 @@ void heap_free_page(heap_t *heap, page_t *page)
|
||||
heap->end = prev;
|
||||
page_delete(page);
|
||||
--heap->pages;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
page_t *heap_allocate(heap_t *heap, size_t requested)
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
|
||||
#include "./base.h"
|
||||
|
||||
#include <stdbool.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
typedef struct Page
|
||||
@@ -34,7 +35,7 @@ typedef struct
|
||||
} heap_t;
|
||||
|
||||
void heap_create(heap_t *);
|
||||
void heap_free_page(heap_t *, page_t *);
|
||||
bool heap_free_page(heap_t *, page_t *);
|
||||
page_t *heap_allocate(heap_t *, size_t);
|
||||
void heap_stop(heap_t *);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user