lkml.org 
[lkml]   [2010]   [Jul]   [9]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
From
Subject[PATCH 1/2] Add trace events to mmap and brk
Date
As requested by Peter Zijlstra, this patch builds on my earlier patch
and adds the corresponding trace points to mmap and brk.

Signed-off-by: Eric B Munson <emunson@mgebm.net>
---
include/trace/events/mm.h | 38 ++++++++++++++++++++++++++++++++++++++
mm/mmap.c | 10 +++++++++-
2 files changed, 47 insertions(+), 1 deletions(-)

diff --git a/include/trace/events/mm.h b/include/trace/events/mm.h
index c3a3857..1563988 100644
--- a/include/trace/events/mm.h
+++ b/include/trace/events/mm.h
@@ -24,6 +24,44 @@ TRACE_EVENT(munmap,
TP_printk("unmapping %u bytes at %lu\n", __entry->len, __entry->start)
);

+TRACE_EVENT(brk,
+ TP_PROTO(unsigned long addr, unsigned long len),
+
+ TP_ARGS(addr, len),
+
+ TP_STRUCT__entry(
+ __field(unsigned long, addr)
+ __field(unsigned long, len)
+ ),
+
+ TP_fast_assign(
+ __entry->addr = addr;
+ __entry->len = len;
+ ),
+
+ TP_printk("brk mmapping %lu bytes at %lu\n", __entry->len,
+ __entry->addr)
+);
+
+TRACE_EVENT(mmap,
+ TP_PROTO(unsigned long addr, unsigned long len),
+
+ TP_ARGS(addr, len),
+
+ TP_STRUCT__entry(
+ __field(unsigned long, addr)
+ __field(unsigned long, len)
+ ),
+
+ TP_fast_assign(
+ __entry->addr = addr;
+ __entry->len = len;
+ ),
+
+ TP_printk("mmapping %lu bytes at %lu\n", __entry->len,
+ __entry->addr)
+);
+
#endif /* _TRACE_MM_H_ */

/* This part must be outside protection */
diff --git a/mm/mmap.c b/mm/mmap.c
index 0775a30..252e3e0 100644
--- a/mm/mmap.c
+++ b/mm/mmap.c
@@ -952,6 +952,7 @@ unsigned long do_mmap_pgoff(struct file *file, unsigned long addr,
unsigned int vm_flags;
int error;
unsigned long reqprot = prot;
+ unsigned long ret;

/*
* Does the application expect PROT_READ to imply PROT_EXEC?
@@ -1077,7 +1078,12 @@ unsigned long do_mmap_pgoff(struct file *file, unsigned long addr,
if (error)
return error;

- return mmap_region(file, addr, len, flags, vm_flags, pgoff);
+ ret = mmap_region(file, addr, len, flags, vm_flags, pgoff);
+
+ if (!(ret & ~PAGE_MASK))
+ trace_mmap(addr, len);
+
+ return ret;
}
EXPORT_SYMBOL(do_mmap_pgoff);

@@ -2218,6 +2224,8 @@ out:
if (!mlock_vma_pages_range(vma, addr, addr + len))
mm->locked_vm += (len >> PAGE_SHIFT);
}
+
+ trace_brk(addr, len);
return addr;
}

--
1.7.0.4


\
 
 \ /
  Last update: 2010-07-09 17:57    [W:0.415 / U:0.520 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site