| author | Nicholas Hastings <skamonkey@gmail.com> |
| Thu Jun 23 18:09:31 2011 -0400 (2011-06-23) | |
| changeset 3304 | 4dfbec2a7ed2 |
| parent 2226 | d10b38524be3 |
| child 3980 | dc7dfcd855dc |
| permissions | -rw-r--r-- |
| dvander@2226 | 1 |
#ifndef _INCLUDE_KNIGHT_KE_CODE_ALLOCATOR_H_ |
| dvander@2226 | 2 |
#define _INCLUDE_KNIGHT_KE_CODE_ALLOCATOR_H_ |
| dvander@2226 | 3 |
|
| dvander@2226 | 4 |
#include <KeLinking.h> |
| dvander@2226 | 5 |
#include <KeStdTypes.h> |
| dvander@2226 | 6 |
|
| dvander@2226 | 7 |
namespace Knight |
| dvander@2226 | 8 |
{ |
| dvander@2226 | 9 |
class KeCodeCache; |
| dvander@2226 | 10 |
|
| dvander@2226 | 11 |
/** |
| dvander@2226 | 12 |
* @brief Creates a new code cache/allocator. |
| dvander@2226 | 13 |
* |
| dvander@2226 | 14 |
* @return New code cache allocator. |
| dvander@2226 | 15 |
*/ |
| dvander@2226 | 16 |
extern KeCodeCache *KE_CreateCodeCache(); |
| dvander@2226 | 17 |
|
| dvander@2226 | 18 |
/** |
| dvander@2226 | 19 |
* @brief Destroys a code cache allocator. |
| dvander@2226 | 20 |
* |
| dvander@2226 | 21 |
* @param cache Code cache object. |
| dvander@2226 | 22 |
*/ |
| dvander@2226 | 23 |
extern void KE_DestroyCodeCache(KeCodeCache *cache); |
| dvander@2226 | 24 |
|
| dvander@2226 | 25 |
/** |
| dvander@2226 | 26 |
* @brief Allocates code memory that is readable, writable, |
| dvander@2226 | 27 |
* and executable. |
| dvander@2226 | 28 |
* |
| dvander@2226 | 29 |
* The address returned wlil be aligned, minimally, on a 16-byte |
| dvander@2226 | 30 |
* boundary. |
| dvander@2226 | 31 |
* |
| dvander@2226 | 32 |
* @param cache Code cache object. |
| dvander@2226 | 33 |
* @param size Amount of memory needed. |
| dvander@2226 | 34 |
* @return Address pointing to the memory. |
| dvander@2226 | 35 |
*/ |
| dvander@2226 | 36 |
extern void *KE_AllocCode(KeCodeCache *cache, size_t size); |
| dvander@2226 | 37 |
|
| dvander@2226 | 38 |
/** |
| dvander@2226 | 39 |
* @brief Frees code memory. |
| dvander@2226 | 40 |
* |
| dvander@2226 | 41 |
* @param cache Code cache object. |
| dvander@2226 | 42 |
* @param code Address of code memory. |
| dvander@2226 | 43 |
*/ |
| dvander@2226 | 44 |
extern void KE_FreeCode(KeCodeCache *cache, void *code); |
| dvander@2226 | 45 |
} |
| dvander@2226 | 46 |
|
| dvander@2226 | 47 |
#endif //_INCLUDE_KNIGHT_KE_CODE_ALLOCATOR_H_ |