Intercepted Memory Functions

The TMS library, mvmalloc.so, in Memory Machine supports a restricted set of glibc.so memory-management functions.

Below is the list of glibc.so functions supported by TMS.

Function Group glibc.so Function Notes
Memory Allocation aligned_alloc()
calloc()
free()
malloc()
malloc_usable_size()
memalign()
posix_memalign()
realloc()
valloc()
Memory-mapped file I/O mmap() Calls are rerouted to mvmalloc.so from glibc.so only if 1) MAP_PRIVATE and MAP_ANONYMOUS are set and 2) the data meet the size and flag restrictions in the configuration file specified by MVMALLOC_CONFIG. All other calls are forwarded directly to glibc.so.
mmap64() Same as mmap().
madvise() Memory Machine supports only the MADV_DONTNEED and MADV_REMOVE advise values.
mprotect() Memory Machine cannot guarantee 4KB-aligned mprotect() requests. When a page under Memory Machine's management is changed to something other than read/write (PROT_READ | PROT_WRITE), Memory Machine 1) converts that page to a private anonymous mapping, 2) permanently removes the page from MVMalloc’s internal data structures and maps, and 3) forwards the call to glibc for handling in DRAM.
mremap() The MREMAP_FIXED flag is not supported.
munmap() Portions of the region to be unmapped that are not managed by Memory Machine are presumed to have been allocated by glibc.so, so their unmap requests are also forwarded to glibc.so.
Execution execle() A subset of the execution functions are implemented to enable the mvmalloc library to preserve the environment when managing applications.
execpve()
execve()
I/O io_getevents() A subset of I/O functions are implemented to enable the mvmalloc library to get and send asynchronous I/O.
io_submit()
Note: It is possible to capture either or both of the function groups (Memory Allocation and Memory-mapped I/O). Which groups are captured is controlled by a configuration file on startup. See Configuration Files.