| /* SPDX-License-Identifier: GPL-2.0 */ |
| #ifndef _LINUX_MM_EVENT_H |
| #define _LINUX_MM_EVENT_H |
| |
| /* |
| * These enums are exposed to userspace via the ftrace trace_pipe_raw endpoint |
| * and are an ABI. Userspace tools depend on them. |
| */ |
| enum mm_event_type { |
| MM_MIN_FAULT = 0, |
| MM_MAJ_FAULT = 1, |
| MM_READ_IO = 2, |
| MM_COMPACTION = 3, |
| MM_RECLAIM = 4, |
| MM_SWP_FAULT = 5, |
| MM_KERN_ALLOC = 6, |
| MM_TYPE_NUM = 7, |
| }; |
| |
| struct mm_event_task { |
| unsigned int count; |
| unsigned int max_lat; |
| u64 accm_lat; |
| } __attribute__ ((packed)); |
| |
| struct mm_event_vmstat { |
| unsigned long free; |
| unsigned long file; |
| unsigned long anon; |
| unsigned long ion; |
| unsigned long slab; |
| unsigned long ws_refault; |
| unsigned long ws_activate; |
| unsigned long mapped; |
| unsigned long pgin; |
| unsigned long pgout; |
| unsigned long swpin; |
| unsigned long swpout; |
| unsigned long reclaim_steal; |
| unsigned long reclaim_scan; |
| unsigned long compact_scan; |
| }; |
| |
| #ifdef CONFIG_MM_EVENT_STAT |
| void mm_event_task_init(struct task_struct *tsk); |
| void mm_event_start(ktime_t *time); |
| void mm_event_end(enum mm_event_type event, ktime_t start); |
| void mm_event_count(enum mm_event_type event, int count); |
| #else |
| static inline void mm_event_task_init(struct task_struct *tsk) {} |
| static inline void mm_event_start(ktime_t *time) {} |
| static inline void mm_event_end(enum mm_event_type event, ktime_t start) {} |
| static inline void mm_event_count(enum mm_event_type event, int count) {} |
| #endif /* _LINUX_MM_EVENT_H */ |
| #endif |