root/include/trace/events/mmap.h
/* SPDX-License-Identifier: GPL-2.0 */
#undef TRACE_SYSTEM
#define TRACE_SYSTEM mmap

#if !defined(_TRACE_MMAP_H) || defined(TRACE_HEADER_MULTI_READ)
#define _TRACE_MMAP_H

#include <linux/tracepoint.h>

TRACE_EVENT(vm_unmapped_area,

        TP_PROTO(unsigned long addr, struct vm_unmapped_area_info *info),

        TP_ARGS(addr, info),

        TP_STRUCT__entry(
                __field(unsigned long,  addr)
                __field(unsigned long,  total_vm)
                __field(unsigned long,  flags)
                __field(unsigned long,  length)
                __field(unsigned long,  low_limit)
                __field(unsigned long,  high_limit)
                __field(unsigned long,  align_mask)
                __field(unsigned long,  align_offset)
        ),

        TP_fast_assign(
                __entry->addr = addr;
                __entry->total_vm = current->mm->total_vm;
                __entry->flags = info->flags;
                __entry->length = info->length;
                __entry->low_limit = info->low_limit;
                __entry->high_limit = info->high_limit;
                __entry->align_mask = info->align_mask;
                __entry->align_offset = info->align_offset;
        ),

        TP_printk("addr=0x%lx err=%ld total_vm=0x%lx flags=0x%lx len=0x%lx lo=0x%lx hi=0x%lx mask=0x%lx ofs=0x%lx",
                IS_ERR_VALUE(__entry->addr) ? 0 : __entry->addr,
                IS_ERR_VALUE(__entry->addr) ? __entry->addr : 0,
                __entry->total_vm, __entry->flags, __entry->length,
                __entry->low_limit, __entry->high_limit, __entry->align_mask,
                __entry->align_offset)
);

TRACE_EVENT(exit_mmap,
        TP_PROTO(struct mm_struct *mm),

        TP_ARGS(mm),

        TP_STRUCT__entry(
                        __field(struct mm_struct *, mm)
                        __field(struct maple_tree *, mt)
        ),

        TP_fast_assign(
                       __entry->mm              = mm;
                       __entry->mt              = &mm->mm_mt;
        ),

        TP_printk("mt_mod %p, DESTROY",
                  __entry->mt
        )
);

#endif

/* This part must be outside protection */
#include <trace/define_trace.h>