BDE 4.14.0 Production release
|
#include <bdls_memoryutil.h>
Public Types | |
enum | Access { k_ACCESS_NONE = 0 , k_ACCESS_READ = 0x1 , k_ACCESS_WRITE = 0x2 , k_ACCESS_EXECUTE = 0x4 , k_ACCESS_READ_WRITE = k_ACCESS_READ | k_ACCESS_WRITE , k_ACCESS_READ_EXECUTE = k_ACCESS_READ | k_ACCESS_EXECUTE , k_ACCESS_WRITE_EXECUTE = k_ACCESS_WRITE | k_ACCESS_EXECUTE , k_ACCESS_READ_WRITE_EXECUTE , BDESU_ACCESS_NONE = k_ACCESS_NONE , BDESU_ACCESS_READ = k_ACCESS_READ , BDESU_ACCESS_WRITE = k_ACCESS_WRITE , BDESU_ACCESS_EXECUTE = k_ACCESS_EXECUTE , BDESU_ACCESS_READ_WRITE = k_ACCESS_READ_WRITE , BDESU_ACCESS_READ_EXECUTE = k_ACCESS_READ_EXECUTE , BDESU_ACCESS_WRITE_EXECUTE = k_ACCESS_WRITE_EXECUTE , BDESU_ACCESS_READ_WRITE_EXECUTE = k_ACCESS_READ_WRITE_EXECUTE , ACCESS_READ = k_ACCESS_READ , ACCESS_WRITE = k_ACCESS_WRITE , ACCESS_EXECUTE = k_ACCESS_EXECUTE , ACCESS_NONE = k_ACCESS_NONE , ACCESS_READ_WRITE = k_ACCESS_READ_WRITE , ACCESS_READ_EXECUTE = k_ACCESS_READ_EXECUTE , ACCESS_WRITE_EXECUTE = k_ACCESS_WRITE_EXECUTE , ACCESS_READ_WRITE_EXECUTE = k_ACCESS_READ_WRITE_EXECUTE } |
Static Public Member Functions | |
static int | pageSize () |
Return the memory page size of the platform. | |
static int | protect (void *address, int numBytes, int mode) |
static void * | allocate (int numBytes) |
static int | deallocate (void *address) |
|
static |
Allocate an area of memory of the specified size numBytes
, aligned on a page boundary. Return a pointer to allocated memory on success, and a null pointer otherwise. Note that the allocated memory is readable and writable, and read/write access to this memory, if revoked, must be restored before deallocation.
|
static |
Deallocate a memory area at the specified address
previously allocated with the allocate
method. Return 0 on success, and a nonzero value otherwise. The behavior is undefined if read or write access to any memory in this area has been revoked and not restored. Note that deallocating memory does not change memory protection.
|
static |
|
static |
Change the access protection on a region of memory starting at the specified address
and numBytes
long, according to specified mode
, making memory readable if (mode & ACCESS_READ)
is nonzero and writable if (mode & ACCESS_WRITE)
is nonzero. Return 0 on success, and a nonzero value otherwise. The behavior is undefined if addr
is not aligned on a page boundary, if numBytes
is not a multiple of pageSize()
, or if numBytes
is 0. Note that some platforms do not support certain protection modes, e.g., on some platforms the memory cannot be made writable but unreadable, or readable but non-executable. On these platforms the actual access protection set on the region might be more permissive than the specified one. Also note that most memory allocators do not expect memory protection on allocated memory to be changed, so you must reset protection back to ACCESS_READ_WRITE before releasing the memory.