knight/shared/KePageAllocator.h
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--
Added helper stock to check if a command exists. (bug 5510, r=asherkin)
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_