124 lines · c
1/* SPDX-License-Identifier: GPL-2.0 */2#undef TRACE_SYSTEM3#define TRACE_SYSTEM vmalloc4 5#if !defined(_TRACE_VMALLOC_H) || defined(TRACE_HEADER_MULTI_READ)6#define _TRACE_VMALLOC_H7 8#include <linux/tracepoint.h>9 10/**11 * alloc_vmap_area - called when a new vmap allocation occurs12 * @addr: an allocated address13 * @size: a requested size14 * @align: a requested alignment15 * @vstart: a requested start range16 * @vend: a requested end range17 * @failed: an allocation failed or not18 *19 * This event is used for a debug purpose, it can give an extra20 * information for a developer about how often it occurs and which21 * parameters are passed for further validation.22 */23TRACE_EVENT(alloc_vmap_area,24 25 TP_PROTO(unsigned long addr, unsigned long size, unsigned long align,26 unsigned long vstart, unsigned long vend, int failed),27 28 TP_ARGS(addr, size, align, vstart, vend, failed),29 30 TP_STRUCT__entry(31 __field(unsigned long, addr)32 __field(unsigned long, size)33 __field(unsigned long, align)34 __field(unsigned long, vstart)35 __field(unsigned long, vend)36 __field(int, failed)37 ),38 39 TP_fast_assign(40 __entry->addr = addr;41 __entry->size = size;42 __entry->align = align;43 __entry->vstart = vstart;44 __entry->vend = vend;45 __entry->failed = failed;46 ),47 48 TP_printk("va_start: %lu size=%lu align=%lu vstart=0x%lx vend=0x%lx failed=%d",49 __entry->addr, __entry->size, __entry->align,50 __entry->vstart, __entry->vend, __entry->failed)51);52 53/**54 * purge_vmap_area_lazy - called when vmap areas were lazily freed55 * @start: purging start address56 * @end: purging end address57 * @npurged: numbed of purged vmap areas58 *59 * This event is used for a debug purpose. It gives some60 * indication about start:end range and how many objects61 * are released.62 */63TRACE_EVENT(purge_vmap_area_lazy,64 65 TP_PROTO(unsigned long start, unsigned long end,66 unsigned int npurged),67 68 TP_ARGS(start, end, npurged),69 70 TP_STRUCT__entry(71 __field(unsigned long, start)72 __field(unsigned long, end)73 __field(unsigned int, npurged)74 ),75 76 TP_fast_assign(77 __entry->start = start;78 __entry->end = end;79 __entry->npurged = npurged;80 ),81 82 TP_printk("start=0x%lx end=0x%lx num_purged=%u",83 __entry->start, __entry->end, __entry->npurged)84);85 86/**87 * free_vmap_area_noflush - called when a vmap area is freed88 * @va_start: a start address of VA89 * @nr_lazy: number of current lazy pages90 * @nr_lazy_max: number of maximum lazy pages91 *92 * This event is used for a debug purpose. It gives some93 * indication about a VA that is released, number of current94 * outstanding areas and a maximum allowed threshold before95 * dropping all of them.96 */97TRACE_EVENT(free_vmap_area_noflush,98 99 TP_PROTO(unsigned long va_start, unsigned long nr_lazy,100 unsigned long nr_lazy_max),101 102 TP_ARGS(va_start, nr_lazy, nr_lazy_max),103 104 TP_STRUCT__entry(105 __field(unsigned long, va_start)106 __field(unsigned long, nr_lazy)107 __field(unsigned long, nr_lazy_max)108 ),109 110 TP_fast_assign(111 __entry->va_start = va_start;112 __entry->nr_lazy = nr_lazy;113 __entry->nr_lazy_max = nr_lazy_max;114 ),115 116 TP_printk("va_start=0x%lx nr_lazy=%lu nr_lazy_max=%lu",117 __entry->va_start, __entry->nr_lazy, __entry->nr_lazy_max)118);119 120#endif /* _TRACE_VMALLOC_H */121 122/* This part must be outside protection */123#include <trace/define_trace.h>124