/** * Copyright (C) Mellanox Technologies Ltd. 2001-2015. ALL RIGHTS RESERVED. * * See file LICENSE for terms. */ #ifndef UCM_MMAP_H_ #define UCM_MMAP_H_ #include #include #define UCM_MMAP_HOOK_RELOC_STR "reloc" #define UCM_MMAP_HOOK_BISTRO_STR "bistro" #if UCM_BISTRO_HOOKS # define UCM_DEFAULT_HOOK_MODE UCM_MMAP_HOOK_BISTRO # define UCM_DEFAULT_HOOK_MODE_STR UCM_MMAP_HOOK_BISTRO_STR #else # define UCM_DEFAULT_HOOK_MODE UCM_MMAP_HOOK_RELOC # define UCM_DEFAULT_HOOK_MODE_STR UCM_MMAP_HOOK_RELOC_STR #endif ucs_status_t ucm_mmap_install(int events); void *ucm_override_mmap(void *addr, size_t length, int prot, int flags, int fd, off_t offset); int ucm_override_munmap(void *addr, size_t length); void *ucm_override_mremap(void *old_address, size_t old_size, size_t new_size, int flags); void *ucm_override_shmat(int shmid, const void *shmaddr, int shmflg); int ucm_override_shmdt(const void *shmaddr); void *ucm_override_sbrk(intptr_t increment); void *ucm_sbrk_select(intptr_t increment); int ucm_override_brk(void *addr); void *ucm_brk_syscall(void *addr); int ucm_override_madvise(void *addr, size_t length, int advice); void ucm_fire_mmap_events(int events); ucs_status_t ucm_mmap_test_installed_events(int events); static UCS_F_ALWAYS_INLINE ucm_mmap_hook_mode_t ucm_mmap_hook_mode(void) { if (RUNNING_ON_VALGRIND && (ucm_global_opts.mmap_hook_mode == UCM_MMAP_HOOK_BISTRO)) { return UCM_MMAP_HOOK_RELOC; } return ucm_global_opts.mmap_hook_mode; } #endif