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.023 / U:117.628 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site