51 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			51 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| #ifndef _INCLUDE_KNIGHT_KE_PAGE_ALLOCATOR_H_
 | |
| #define _INCLUDE_KNIGHT_KE_PAGE_ALLOCATOR_H_
 | |
| 
 | |
| #include <stddef.h>
 | |
| #include <stdint.h>
 | |
| 
 | |
| namespace Knight
 | |
| {
 | |
| 	class KePageAllocator;
 | |
| 
 | |
| 	/**
 | |
| 	 * @brief Creates a page allocator.
 | |
| 	 *
 | |
| 	 * @return				New page allocator.
 | |
| 	 */
 | |
| 	extern KePageAllocator *KE_CreatePageAllocator();
 | |
| 
 | |
| 	/**
 | |
| 	 * @brief Destroys a page allocator, freeing all live pages it owns.
 | |
| 	 *
 | |
| 	 * @param				Page allocator.
 | |
| 	 */
 | |
| 	extern void KE_DestroyPageAllocator(KePageAllocator *alloc);
 | |
| 
 | |
| 	/**
 | |
| 	 * @brief Allocates a page of memory.
 | |
| 	 *
 | |
| 	 * @param alloc			Page allocator.
 | |
| 	 * @return				Page of memory.
 | |
| 	 */
 | |
| 	extern void *KE_PageAlloc(KePageAllocator *alloc);
 | |
| 
 | |
| 	/**
 | |
| 	* @brief Frees a page of memory.
 | |
| 	*
 | |
| 	* @param alloc			Page allocator.
 | |
| 	* @param page			Page of memory.
 | |
| 	*/
 | |
| 	extern void KE_PageFree(KePageAllocator *alloc, void *page);
 | |
| 
 | |
| 	/**
 | |
| 	* @brief Returns the size of a page.
 | |
| 	*
 | |
| 	* @param alloc			Page allocator.
 | |
| 	* @return				Page size.
 | |
| 	*/
 | |
| 	extern size_t KE_PageSize(KePageAllocator *alloc);
 | |
| }
 | |
| 
 | |
| #endif //_INCLUDE_KNIGHT_KE_PAGE_ALLOCATOR_H_
 |