Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0 */
0002 #undef TRACE_SYSTEM
0003 #define TRACE_SYSTEM oom
0004 
0005 #if !defined(_TRACE_OOM_H) || defined(TRACE_HEADER_MULTI_READ)
0006 #define _TRACE_OOM_H
0007 #include <linux/tracepoint.h>
0008 #include <trace/events/mmflags.h>
0009 
0010 TRACE_EVENT(oom_score_adj_update,
0011 
0012     TP_PROTO(struct task_struct *task),
0013 
0014     TP_ARGS(task),
0015 
0016     TP_STRUCT__entry(
0017         __field(    pid_t,  pid)
0018         __array(    char,   comm,   TASK_COMM_LEN )
0019         __field(    short,  oom_score_adj)
0020     ),
0021 
0022     TP_fast_assign(
0023         __entry->pid = task->pid;
0024         memcpy(__entry->comm, task->comm, TASK_COMM_LEN);
0025         __entry->oom_score_adj = task->signal->oom_score_adj;
0026     ),
0027 
0028     TP_printk("pid=%d comm=%s oom_score_adj=%hd",
0029         __entry->pid, __entry->comm, __entry->oom_score_adj)
0030 );
0031 
0032 TRACE_EVENT(reclaim_retry_zone,
0033 
0034     TP_PROTO(struct zoneref *zoneref,
0035         int order,
0036         unsigned long reclaimable,
0037         unsigned long available,
0038         unsigned long min_wmark,
0039         int no_progress_loops,
0040         bool wmark_check),
0041 
0042     TP_ARGS(zoneref, order, reclaimable, available, min_wmark, no_progress_loops, wmark_check),
0043 
0044     TP_STRUCT__entry(
0045         __field(    int, node)
0046         __field(    int, zone_idx)
0047         __field(    int,    order)
0048         __field(    unsigned long,  reclaimable)
0049         __field(    unsigned long,  available)
0050         __field(    unsigned long,  min_wmark)
0051         __field(    int,    no_progress_loops)
0052         __field(    bool,   wmark_check)
0053     ),
0054 
0055     TP_fast_assign(
0056         __entry->node = zone_to_nid(zoneref->zone);
0057         __entry->zone_idx = zoneref->zone_idx;
0058         __entry->order = order;
0059         __entry->reclaimable = reclaimable;
0060         __entry->available = available;
0061         __entry->min_wmark = min_wmark;
0062         __entry->no_progress_loops = no_progress_loops;
0063         __entry->wmark_check = wmark_check;
0064     ),
0065 
0066     TP_printk("node=%d zone=%-8s order=%d reclaimable=%lu available=%lu min_wmark=%lu no_progress_loops=%d wmark_check=%d",
0067             __entry->node, __print_symbolic(__entry->zone_idx, ZONE_TYPE),
0068             __entry->order,
0069             __entry->reclaimable, __entry->available, __entry->min_wmark,
0070             __entry->no_progress_loops,
0071             __entry->wmark_check)
0072 );
0073 
0074 TRACE_EVENT(mark_victim,
0075     TP_PROTO(int pid),
0076 
0077     TP_ARGS(pid),
0078 
0079     TP_STRUCT__entry(
0080         __field(int, pid)
0081     ),
0082 
0083     TP_fast_assign(
0084         __entry->pid = pid;
0085     ),
0086 
0087     TP_printk("pid=%d", __entry->pid)
0088 );
0089 
0090 TRACE_EVENT(wake_reaper,
0091     TP_PROTO(int pid),
0092 
0093     TP_ARGS(pid),
0094 
0095     TP_STRUCT__entry(
0096         __field(int, pid)
0097     ),
0098 
0099     TP_fast_assign(
0100         __entry->pid = pid;
0101     ),
0102 
0103     TP_printk("pid=%d", __entry->pid)
0104 );
0105 
0106 TRACE_EVENT(start_task_reaping,
0107     TP_PROTO(int pid),
0108 
0109     TP_ARGS(pid),
0110 
0111     TP_STRUCT__entry(
0112         __field(int, pid)
0113     ),
0114 
0115     TP_fast_assign(
0116         __entry->pid = pid;
0117     ),
0118 
0119     TP_printk("pid=%d", __entry->pid)
0120 );
0121 
0122 TRACE_EVENT(finish_task_reaping,
0123     TP_PROTO(int pid),
0124 
0125     TP_ARGS(pid),
0126 
0127     TP_STRUCT__entry(
0128         __field(int, pid)
0129     ),
0130 
0131     TP_fast_assign(
0132         __entry->pid = pid;
0133     ),
0134 
0135     TP_printk("pid=%d", __entry->pid)
0136 );
0137 
0138 TRACE_EVENT(skip_task_reaping,
0139     TP_PROTO(int pid),
0140 
0141     TP_ARGS(pid),
0142 
0143     TP_STRUCT__entry(
0144         __field(int, pid)
0145     ),
0146 
0147     TP_fast_assign(
0148         __entry->pid = pid;
0149     ),
0150 
0151     TP_printk("pid=%d", __entry->pid)
0152 );
0153 
0154 #ifdef CONFIG_COMPACTION
0155 TRACE_EVENT(compact_retry,
0156 
0157     TP_PROTO(int order,
0158         enum compact_priority priority,
0159         enum compact_result result,
0160         int retries,
0161         int max_retries,
0162         bool ret),
0163 
0164     TP_ARGS(order, priority, result, retries, max_retries, ret),
0165 
0166     TP_STRUCT__entry(
0167         __field(    int, order)
0168         __field(    int, priority)
0169         __field(    int, result)
0170         __field(    int, retries)
0171         __field(    int, max_retries)
0172         __field(    bool, ret)
0173     ),
0174 
0175     TP_fast_assign(
0176         __entry->order = order;
0177         __entry->priority = priority;
0178         __entry->result = compact_result_to_feedback(result);
0179         __entry->retries = retries;
0180         __entry->max_retries = max_retries;
0181         __entry->ret = ret;
0182     ),
0183 
0184     TP_printk("order=%d priority=%s compaction_result=%s retries=%d max_retries=%d should_retry=%d",
0185             __entry->order,
0186             __print_symbolic(__entry->priority, COMPACTION_PRIORITY),
0187             __print_symbolic(__entry->result, COMPACTION_FEEDBACK),
0188             __entry->retries, __entry->max_retries,
0189             __entry->ret)
0190 );
0191 #endif /* CONFIG_COMPACTION */
0192 #endif
0193 
0194 /* This part must be outside protection */
0195 #include <trace/define_trace.h>