103 lines
2.0 KiB
103 lines
2.0 KiB
/*
|
|
* Copyright (c) 2018 Google, Inc.
|
|
*
|
|
* SPDX-License-Identifier: GPL-2.0-or-later
|
|
*/
|
|
|
|
#ifndef _LTP_TRACE_PARSE_H_
|
|
#define _LTP_TRACE_PARSE_H_
|
|
|
|
enum {
|
|
TRACE_RECORD_OTHER = 0,
|
|
TRACE_RECORD_SCHED_PROCESS_EXIT,
|
|
TRACE_RECORD_SCHED_PROCESS_FORK,
|
|
TRACE_RECORD_SCHED_SWITCH,
|
|
TRACE_RECORD_SCHED_WAKEUP,
|
|
TRACE_RECORD_SUGOV_UTIL_UPDATE,
|
|
TRACE_RECORD_SUGOV_NEXT_FREQ,
|
|
TRACE_RECORD_CPU_FREQUENCY,
|
|
TRACE_RECORD_TRACING_MARK_WRITE,
|
|
};
|
|
|
|
#define IRQ_CONTEXT_NORMAL '.'
|
|
#define IRQ_CONTEXT_SOFT 's'
|
|
#define IRQ_CONTEXT_HARD 'h'
|
|
#define IRQ_CONTEXT_HARD_IN_SOFT 'H'
|
|
#define IRQ_CONTEXT_NMI 'z'
|
|
#define IRQ_CONTEXT_NMI_IN_HARD 'Z'
|
|
|
|
struct timestamp {
|
|
unsigned int sec;
|
|
unsigned int usec;
|
|
};
|
|
|
|
struct trace_cpu_frequency {
|
|
unsigned int state;
|
|
unsigned short cpu;
|
|
};
|
|
|
|
struct trace_sched_switch {
|
|
char prev_comm[17];
|
|
unsigned short prev_pid;
|
|
unsigned short prev_prio;
|
|
char prev_state;
|
|
char next_comm[17];
|
|
unsigned short next_pid;
|
|
unsigned short next_prio;
|
|
};
|
|
|
|
struct trace_sched_wakeup {
|
|
char comm[17];
|
|
unsigned short pid;
|
|
unsigned short prio;
|
|
unsigned short cpu;
|
|
};
|
|
|
|
struct trace_sugov_util_update {
|
|
int cpu;
|
|
int util;
|
|
int avg_cap;
|
|
int max_cap;
|
|
};
|
|
|
|
struct trace_sugov_next_freq {
|
|
int cpu;
|
|
int util;
|
|
int max;
|
|
int freq;
|
|
};
|
|
|
|
struct trace_record {
|
|
char task[17];
|
|
unsigned short pid;
|
|
unsigned short cpu;
|
|
|
|
#define TRACE_RECORD_IRQS_OFF 0x1
|
|
#define TRACE_RECORD_TIF_NEED_RESCHED 0x2
|
|
#define TRACE_RECORD_PREEMPT_NEED_RESCHED 0x4
|
|
unsigned short flags;
|
|
unsigned char irq_context;
|
|
unsigned short preempt_depth;
|
|
|
|
struct timestamp ts;
|
|
|
|
unsigned int event_type;
|
|
void *event_data;
|
|
};
|
|
|
|
extern int num_trace_records;
|
|
extern struct trace_record *trace;
|
|
extern char *ftrace_root_dir;
|
|
|
|
void tracefs_write(const char *file_name, const char *value);
|
|
void trace_setup(void);
|
|
void trace_cleanup(void);
|
|
void print_trace_record(struct trace_record *tr);
|
|
struct trace_record *load_trace(void);
|
|
|
|
#define LOAD_TRACE() \
|
|
if (!load_trace()) \
|
|
tst_brk(TBROK, "Failed to load trace.\n");
|
|
|
|
#endif /* _LTP_TRACE_PARSE_H_ */
|