diff options
Diffstat (limited to 'sys/vm/vm_mmap.c')
-rw-r--r-- | sys/vm/vm_mmap.c | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/sys/vm/vm_mmap.c b/sys/vm/vm_mmap.c index 46fd212df299..501ace32bd11 100644 --- a/sys/vm/vm_mmap.c +++ b/sys/vm/vm_mmap.c @@ -41,6 +41,7 @@ */ #include "opt_hwpmc_hooks.h" +#include "opt_hwt_hooks.h" #include "opt_vm.h" #define EXTERR_CATEGORY EXTERR_CAT_MMAP @@ -95,6 +96,10 @@ #include <sys/pmckern.h> #endif +#ifdef HWT_HOOKS +#include <dev/hwt/hwt_hook.h> +#endif + int old_mlock = 0; SYSCTL_INT(_vm, OID_AUTO, old_mlock, CTLFLAG_RWTUN, &old_mlock, 0, "Do not apply RLIMIT_MEMLOCK on mlockall"); @@ -613,6 +618,17 @@ kern_munmap(struct thread *td, uintptr_t addr0, size_t size) #endif rv = vm_map_delete(map, addr, end); +#ifdef HWT_HOOKS + if (HWT_HOOK_INSTALLED && rv == KERN_SUCCESS) { + struct hwt_record_entry ent; + + ent.addr = (uintptr_t) addr; + ent.fullpath = NULL; + ent.record_type = HWT_RECORD_MUNMAP; + HWT_CALL_HOOK(td, HWT_RECORD, &ent); + } +#endif + #ifdef HWPMC_HOOKS if (rv == KERN_SUCCESS && __predict_false(pmc_handled)) { /* downgrade the lock to prevent a LOR with the pmc-sx lock */ |