aboutsummaryrefslogtreecommitdiff
path: root/sys/vm/vm_mmap.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/vm/vm_mmap.c')
-rw-r--r--sys/vm/vm_mmap.c16
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 */