49 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			49 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| #ifndef _INCLUDE_KNIGHT_KE_CODE_ALLOCATOR_H_
 | |
| #define _INCLUDE_KNIGHT_KE_CODE_ALLOCATOR_H_
 | |
| 
 | |
| #include <KeLinking.h>
 | |
| #include <stddef.h>
 | |
| #include <stdint.h>
 | |
| 
 | |
| namespace Knight
 | |
| {
 | |
| 	class KeCodeCache;
 | |
| 
 | |
| 	/**
 | |
| 	 * @brief Creates a new code cache/allocator.
 | |
| 	 *
 | |
| 	 * @return				New code cache allocator.
 | |
| 	 */
 | |
| 	extern KeCodeCache *KE_CreateCodeCache();
 | |
| 
 | |
| 	/**
 | |
| 	 * @brief Destroys a code cache allocator.
 | |
| 	 *
 | |
| 	 * @param cache			Code cache object.
 | |
| 	 */
 | |
| 	extern void KE_DestroyCodeCache(KeCodeCache *cache);
 | |
| 
 | |
| 	/**
 | |
| 	 * @brief Allocates code memory that is readable, writable, 
 | |
| 	 * and executable.
 | |
| 	 *
 | |
| 	 * The address returned wlil be aligned, minimally, on a 16-byte 
 | |
| 	 * boundary.
 | |
| 	 *
 | |
| 	 * @param cache			Code cache object.
 | |
| 	 * @param size			Amount of memory needed.
 | |
| 	 * @return				Address pointing to the memory.
 | |
| 	 */
 | |
| 	extern void *KE_AllocCode(KeCodeCache *cache, size_t size);
 | |
| 
 | |
| 	/**
 | |
| 	 * @brief Frees code memory.
 | |
| 	 *
 | |
| 	 * @param cache			Code cache object.
 | |
| 	 * @param code			Address of code memory.
 | |
| 	 */
 | |
| 	extern void KE_FreeCode(KeCodeCache *cache, void *code);
 | |
| }
 | |
| 
 | |
| #endif //_INCLUDE_KNIGHT_KE_CODE_ALLOCATOR_H_
 |