| author | Kyle Sanderson <kyle.leet@gmail.com> |
| Mon Aug 12 00:42:56 2013 +0100 (2013-08-12) | |
| changeset 3994 | 4bc73bac0f4c |
| parent 3980 | dc7dfcd855dc |
| permissions | -rw-r--r-- |
| dvander@2226 | 1 |
#ifndef _INCLUDE_KNIGHT_KE_PAGE_ALLOCATOR_H_ |
| dvander@2226 | 2 |
#define _INCLUDE_KNIGHT_KE_PAGE_ALLOCATOR_H_ |
| dvander@2226 | 3 |
|
| dvander@3980 | 4 |
#include <stddef.h> |
| dvander@3980 | 5 |
#include <stdint.h> |
| dvander@2226 | 6 |
|
| dvander@2226 | 7 |
namespace Knight |
| dvander@2226 | 8 |
{ |
| dvander@2226 | 9 |
class KePageAllocator; |
| dvander@2226 | 10 |
|
| dvander@2226 | 11 |
/** |
| dvander@2226 | 12 |
* @brief Creates a page allocator. |
| dvander@2226 | 13 |
* |
| dvander@2226 | 14 |
* @return New page allocator. |
| dvander@2226 | 15 |
*/ |
| dvander@2226 | 16 |
extern KePageAllocator *KE_CreatePageAllocator(); |
| dvander@2226 | 17 |
|
| dvander@2226 | 18 |
/** |
| dvander@2226 | 19 |
* @brief Destroys a page allocator, freeing all live pages it owns. |
| dvander@2226 | 20 |
* |
| dvander@2226 | 21 |
* @param Page allocator. |
| dvander@2226 | 22 |
*/ |
| dvander@2226 | 23 |
extern void KE_DestroyPageAllocator(KePageAllocator *alloc); |
| dvander@2226 | 24 |
|
| dvander@2226 | 25 |
/** |
| dvander@2226 | 26 |
* @brief Allocates a page of memory. |
| dvander@2226 | 27 |
* |
| dvander@2226 | 28 |
* @param alloc Page allocator. |
| dvander@2226 | 29 |
* @return Page of memory. |
| dvander@2226 | 30 |
*/ |
| dvander@2226 | 31 |
extern void *KE_PageAlloc(KePageAllocator *alloc); |
| dvander@2226 | 32 |
|
| dvander@2226 | 33 |
/** |
| dvander@2226 | 34 |
* @brief Frees a page of memory. |
| dvander@2226 | 35 |
* |
| dvander@2226 | 36 |
* @param alloc Page allocator. |
| dvander@2226 | 37 |
* @param page Page of memory. |
| dvander@2226 | 38 |
*/ |
| dvander@2226 | 39 |
extern void KE_PageFree(KePageAllocator *alloc, void *page); |
| dvander@2226 | 40 |
|
| dvander@2226 | 41 |
/** |
| dvander@2226 | 42 |
* @brief Returns the size of a page. |
| dvander@2226 | 43 |
* |
| dvander@2226 | 44 |
* @param alloc Page allocator. |
| dvander@2226 | 45 |
* @return Page size. |
| dvander@2226 | 46 |
*/ |
| dvander@2226 | 47 |
extern size_t KE_PageSize(KePageAllocator *alloc); |
| dvander@2226 | 48 |
} |
| dvander@2226 | 49 |
|
| dvander@2226 | 50 |
#endif //_INCLUDE_KNIGHT_KE_PAGE_ALLOCATOR_H_ |