1. Android kernel(v5.4) modify
include/trace/events/kmem.h
TRACE_EVENT(page_fault_begin,
TP_PROTO(
bool speculative_fault,
char track_event_type,
const char *slice_name
),
TP_ARGS(speculative_fault, track_event_type, slice_name),
TP_STRUCT__entry(
__field( bool, speculative_fault )
__field( pid_t, pid )
__array( char, comm, TASK_COMM_LEN )
__field(char, track_event_type)
__string(slice_name, slice_name)
),
TP_fast_assign(
__entry->speculative_fault = speculative_fault,
__entry->pid = current->pid;
memcpy(__entry->comm, current->comm, TASK_COMM_LEN);
__entry->track_event_type = track_event_type;
__assign_str(slice_name, slice_name);
),
TP_printk("pid=%d comm=%s sp=%d type=%c slice_name=%s",
__entry->pid, __entry->comm, __entry->speculative_fault,
__entry->track_event_type, __get_str(slice_name))
);
+ trace_page_fault_begin(1 , 'B', "page_fault");
fault = handle_speculative_fault(mm, addr, mm_flags, &vma);
+ trace_page_fault_begin(1 , 'E', "");