#ifndef _U_EXECMEM_H_
#define _U_EXECMEM_H_
/**
* Allocates \p size bytes of executable memory.
*
* The returned pointer may or may not be writable. Call
* \c u_execmem_get_writable to get a pointer to a writable mapping.
*/
void *u_execmem_alloc(unsigned int size);
/**
* Returns a writable mapping for a pointer returned by \c u_execmem_alloc.
*
* If \p execPtr is a pointer returned by \c u_execmem_alloc, then this
* function will return a writable mapping of the same memory.
*
* If \p execPtr was not returned by \c u_execmem_alloc, then it will be
* returned unmodified. Thus, it's safe to pass a pointer to a static
* or dynamic entrypoint.
*/
void *u_execmem_get_writable(void *execPtr);
/**
* Frees the memory allocated from u_execmem_alloc.
*/
void u_execmem_free(void);
#endif /* _U_EXECMEM_H_ */