forked from luck/tmp_suning_uos_patched
perf evsel: Rename perf_evsel__{str,int}val() and other tracepoint field metehods to to evsel__*()
As those are not 'struct evsel' methods, not part of tools/lib/perf/, aka libperf, to whom the perf_ prefix belongs. Cc: Adrian Hunter <adrian.hunter@intel.com> Cc: Jiri Olsa <jolsa@kernel.org> Cc: Namhyung Kim <namhyung@kernel.org> Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:
parent
aa8c406b0a
commit
efc0cdc9ed
|
@ -39,7 +39,7 @@ static void hcall_event_get_key(struct evsel *evsel,
|
||||||
struct event_key *key)
|
struct event_key *key)
|
||||||
{
|
{
|
||||||
key->info = 0;
|
key->info = 0;
|
||||||
key->key = perf_evsel__intval(evsel, sample, "req");
|
key->key = evsel__intval(evsel, sample, "req");
|
||||||
}
|
}
|
||||||
|
|
||||||
static const char *get_hcall_exit_reason(u64 exit_code)
|
static const char *get_hcall_exit_reason(u64 exit_code)
|
||||||
|
|
|
@ -30,7 +30,7 @@ static void event_icpt_insn_get_key(struct evsel *evsel,
|
||||||
{
|
{
|
||||||
unsigned long insn;
|
unsigned long insn;
|
||||||
|
|
||||||
insn = perf_evsel__intval(evsel, sample, "instruction");
|
insn = evsel__intval(evsel, sample, "instruction");
|
||||||
key->key = icpt_insn_decoder(insn);
|
key->key = icpt_insn_decoder(insn);
|
||||||
key->exit_reasons = sie_icpt_insn_codes;
|
key->exit_reasons = sie_icpt_insn_codes;
|
||||||
}
|
}
|
||||||
|
@ -39,7 +39,7 @@ static void event_sigp_get_key(struct evsel *evsel,
|
||||||
struct perf_sample *sample,
|
struct perf_sample *sample,
|
||||||
struct event_key *key)
|
struct event_key *key)
|
||||||
{
|
{
|
||||||
key->key = perf_evsel__intval(evsel, sample, "order_code");
|
key->key = evsel__intval(evsel, sample, "order_code");
|
||||||
key->exit_reasons = sie_sigp_order_codes;
|
key->exit_reasons = sie_sigp_order_codes;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -47,7 +47,7 @@ static void event_diag_get_key(struct evsel *evsel,
|
||||||
struct perf_sample *sample,
|
struct perf_sample *sample,
|
||||||
struct event_key *key)
|
struct event_key *key)
|
||||||
{
|
{
|
||||||
key->key = perf_evsel__intval(evsel, sample, "code");
|
key->key = evsel__intval(evsel, sample, "code");
|
||||||
key->exit_reasons = sie_diagnose_codes;
|
key->exit_reasons = sie_diagnose_codes;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -55,7 +55,7 @@ static void event_icpt_prog_get_key(struct evsel *evsel,
|
||||||
struct perf_sample *sample,
|
struct perf_sample *sample,
|
||||||
struct event_key *key)
|
struct event_key *key)
|
||||||
{
|
{
|
||||||
key->key = perf_evsel__intval(evsel, sample, "code");
|
key->key = evsel__intval(evsel, sample, "code");
|
||||||
key->exit_reasons = sie_icpt_prog_codes;
|
key->exit_reasons = sie_icpt_prog_codes;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -31,8 +31,8 @@ const char *kvm_exit_trace = "kvm:kvm_exit";
|
||||||
static void mmio_event_get_key(struct evsel *evsel, struct perf_sample *sample,
|
static void mmio_event_get_key(struct evsel *evsel, struct perf_sample *sample,
|
||||||
struct event_key *key)
|
struct event_key *key)
|
||||||
{
|
{
|
||||||
key->key = perf_evsel__intval(evsel, sample, "gpa");
|
key->key = evsel__intval(evsel, sample, "gpa");
|
||||||
key->info = perf_evsel__intval(evsel, sample, "type");
|
key->info = evsel__intval(evsel, sample, "type");
|
||||||
}
|
}
|
||||||
|
|
||||||
#define KVM_TRACE_MMIO_READ_UNSATISFIED 0
|
#define KVM_TRACE_MMIO_READ_UNSATISFIED 0
|
||||||
|
@ -48,7 +48,7 @@ static bool mmio_event_begin(struct evsel *evsel,
|
||||||
|
|
||||||
/* MMIO write begin event in kernel. */
|
/* MMIO write begin event in kernel. */
|
||||||
if (!strcmp(evsel->name, "kvm:kvm_mmio") &&
|
if (!strcmp(evsel->name, "kvm:kvm_mmio") &&
|
||||||
perf_evsel__intval(evsel, sample, "type") == KVM_TRACE_MMIO_WRITE) {
|
evsel__intval(evsel, sample, "type") == KVM_TRACE_MMIO_WRITE) {
|
||||||
mmio_event_get_key(evsel, sample, key);
|
mmio_event_get_key(evsel, sample, key);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -65,7 +65,7 @@ static bool mmio_event_end(struct evsel *evsel, struct perf_sample *sample,
|
||||||
|
|
||||||
/* MMIO read end event in kernel.*/
|
/* MMIO read end event in kernel.*/
|
||||||
if (!strcmp(evsel->name, "kvm:kvm_mmio") &&
|
if (!strcmp(evsel->name, "kvm:kvm_mmio") &&
|
||||||
perf_evsel__intval(evsel, sample, "type") == KVM_TRACE_MMIO_READ) {
|
evsel__intval(evsel, sample, "type") == KVM_TRACE_MMIO_READ) {
|
||||||
mmio_event_get_key(evsel, sample, key);
|
mmio_event_get_key(evsel, sample, key);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -94,8 +94,8 @@ static void ioport_event_get_key(struct evsel *evsel,
|
||||||
struct perf_sample *sample,
|
struct perf_sample *sample,
|
||||||
struct event_key *key)
|
struct event_key *key)
|
||||||
{
|
{
|
||||||
key->key = perf_evsel__intval(evsel, sample, "port");
|
key->key = evsel__intval(evsel, sample, "port");
|
||||||
key->info = perf_evsel__intval(evsel, sample, "rw");
|
key->info = evsel__intval(evsel, sample, "rw");
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool ioport_event_begin(struct evsel *evsel,
|
static bool ioport_event_begin(struct evsel *evsel,
|
||||||
|
|
|
@ -536,7 +536,7 @@ static int perf_inject__sched_stat(struct perf_tool *tool,
|
||||||
union perf_event *event_sw;
|
union perf_event *event_sw;
|
||||||
struct perf_sample sample_sw;
|
struct perf_sample sample_sw;
|
||||||
struct perf_inject *inject = container_of(tool, struct perf_inject, tool);
|
struct perf_inject *inject = container_of(tool, struct perf_inject, tool);
|
||||||
u32 pid = perf_evsel__intval(evsel, sample, "pid");
|
u32 pid = evsel__intval(evsel, sample, "pid");
|
||||||
|
|
||||||
list_for_each_entry(ent, &inject->samples, node) {
|
list_for_each_entry(ent, &inject->samples, node) {
|
||||||
if (pid == ent->tid)
|
if (pid == ent->tid)
|
||||||
|
|
|
@ -172,10 +172,10 @@ static int insert_caller_stat(unsigned long call_site,
|
||||||
static int perf_evsel__process_alloc_event(struct evsel *evsel,
|
static int perf_evsel__process_alloc_event(struct evsel *evsel,
|
||||||
struct perf_sample *sample)
|
struct perf_sample *sample)
|
||||||
{
|
{
|
||||||
unsigned long ptr = perf_evsel__intval(evsel, sample, "ptr"),
|
unsigned long ptr = evsel__intval(evsel, sample, "ptr"),
|
||||||
call_site = perf_evsel__intval(evsel, sample, "call_site");
|
call_site = evsel__intval(evsel, sample, "call_site");
|
||||||
int bytes_req = perf_evsel__intval(evsel, sample, "bytes_req"),
|
int bytes_req = evsel__intval(evsel, sample, "bytes_req"),
|
||||||
bytes_alloc = perf_evsel__intval(evsel, sample, "bytes_alloc");
|
bytes_alloc = evsel__intval(evsel, sample, "bytes_alloc");
|
||||||
|
|
||||||
if (insert_alloc_stat(call_site, ptr, bytes_req, bytes_alloc, sample->cpu) ||
|
if (insert_alloc_stat(call_site, ptr, bytes_req, bytes_alloc, sample->cpu) ||
|
||||||
insert_caller_stat(call_site, bytes_req, bytes_alloc))
|
insert_caller_stat(call_site, bytes_req, bytes_alloc))
|
||||||
|
@ -195,7 +195,7 @@ static int perf_evsel__process_alloc_node_event(struct evsel *evsel,
|
||||||
|
|
||||||
if (!ret) {
|
if (!ret) {
|
||||||
int node1 = cpu__get_node(sample->cpu),
|
int node1 = cpu__get_node(sample->cpu),
|
||||||
node2 = perf_evsel__intval(evsel, sample, "node");
|
node2 = evsel__intval(evsel, sample, "node");
|
||||||
|
|
||||||
if (node1 != node2)
|
if (node1 != node2)
|
||||||
nr_cross_allocs++;
|
nr_cross_allocs++;
|
||||||
|
@ -235,7 +235,7 @@ static struct alloc_stat *search_alloc_stat(unsigned long ptr,
|
||||||
static int perf_evsel__process_free_event(struct evsel *evsel,
|
static int perf_evsel__process_free_event(struct evsel *evsel,
|
||||||
struct perf_sample *sample)
|
struct perf_sample *sample)
|
||||||
{
|
{
|
||||||
unsigned long ptr = perf_evsel__intval(evsel, sample, "ptr");
|
unsigned long ptr = evsel__intval(evsel, sample, "ptr");
|
||||||
struct alloc_stat *s_alloc, *s_caller;
|
struct alloc_stat *s_alloc, *s_caller;
|
||||||
|
|
||||||
s_alloc = search_alloc_stat(ptr, 0, &root_alloc_stat, ptr_cmp);
|
s_alloc = search_alloc_stat(ptr, 0, &root_alloc_stat, ptr_cmp);
|
||||||
|
@ -788,9 +788,9 @@ static int perf_evsel__process_page_alloc_event(struct evsel *evsel,
|
||||||
struct perf_sample *sample)
|
struct perf_sample *sample)
|
||||||
{
|
{
|
||||||
u64 page;
|
u64 page;
|
||||||
unsigned int order = perf_evsel__intval(evsel, sample, "order");
|
unsigned int order = evsel__intval(evsel, sample, "order");
|
||||||
unsigned int gfp_flags = perf_evsel__intval(evsel, sample, "gfp_flags");
|
unsigned int gfp_flags = evsel__intval(evsel, sample, "gfp_flags");
|
||||||
unsigned int migrate_type = perf_evsel__intval(evsel, sample,
|
unsigned int migrate_type = evsel__intval(evsel, sample,
|
||||||
"migratetype");
|
"migratetype");
|
||||||
u64 bytes = kmem_page_size << order;
|
u64 bytes = kmem_page_size << order;
|
||||||
u64 callsite;
|
u64 callsite;
|
||||||
|
@ -802,9 +802,9 @@ static int perf_evsel__process_page_alloc_event(struct evsel *evsel,
|
||||||
};
|
};
|
||||||
|
|
||||||
if (use_pfn)
|
if (use_pfn)
|
||||||
page = perf_evsel__intval(evsel, sample, "pfn");
|
page = evsel__intval(evsel, sample, "pfn");
|
||||||
else
|
else
|
||||||
page = perf_evsel__intval(evsel, sample, "page");
|
page = evsel__intval(evsel, sample, "page");
|
||||||
|
|
||||||
nr_page_allocs++;
|
nr_page_allocs++;
|
||||||
total_page_alloc_bytes += bytes;
|
total_page_alloc_bytes += bytes;
|
||||||
|
@ -861,7 +861,7 @@ static int perf_evsel__process_page_free_event(struct evsel *evsel,
|
||||||
struct perf_sample *sample)
|
struct perf_sample *sample)
|
||||||
{
|
{
|
||||||
u64 page;
|
u64 page;
|
||||||
unsigned int order = perf_evsel__intval(evsel, sample, "order");
|
unsigned int order = evsel__intval(evsel, sample, "order");
|
||||||
u64 bytes = kmem_page_size << order;
|
u64 bytes = kmem_page_size << order;
|
||||||
struct page_stat *pstat;
|
struct page_stat *pstat;
|
||||||
struct page_stat this = {
|
struct page_stat this = {
|
||||||
|
@ -869,9 +869,9 @@ static int perf_evsel__process_page_free_event(struct evsel *evsel,
|
||||||
};
|
};
|
||||||
|
|
||||||
if (use_pfn)
|
if (use_pfn)
|
||||||
page = perf_evsel__intval(evsel, sample, "pfn");
|
page = evsel__intval(evsel, sample, "pfn");
|
||||||
else
|
else
|
||||||
page = perf_evsel__intval(evsel, sample, "page");
|
page = evsel__intval(evsel, sample, "page");
|
||||||
|
|
||||||
nr_page_frees++;
|
nr_page_frees++;
|
||||||
total_page_free_bytes += bytes;
|
total_page_free_bytes += bytes;
|
||||||
|
@ -1392,7 +1392,7 @@ static int __cmd_kmem(struct perf_session *session)
|
||||||
|
|
||||||
evlist__for_each_entry(session->evlist, evsel) {
|
evlist__for_each_entry(session->evlist, evsel) {
|
||||||
if (!strcmp(evsel__name(evsel), "kmem:mm_page_alloc") &&
|
if (!strcmp(evsel__name(evsel), "kmem:mm_page_alloc") &&
|
||||||
perf_evsel__field(evsel, "pfn")) {
|
evsel__field(evsel, "pfn")) {
|
||||||
use_pfn = true;
|
use_pfn = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
@ -69,7 +69,7 @@ void exit_event_get_key(struct evsel *evsel,
|
||||||
struct event_key *key)
|
struct event_key *key)
|
||||||
{
|
{
|
||||||
key->info = 0;
|
key->info = 0;
|
||||||
key->key = perf_evsel__intval(evsel, sample, kvm_exit_reason);
|
key->key = evsel__intval(evsel, sample, kvm_exit_reason);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool kvm_exit_event(struct evsel *evsel)
|
bool kvm_exit_event(struct evsel *evsel)
|
||||||
|
@ -416,8 +416,7 @@ struct vcpu_event_record *per_vcpu_record(struct thread *thread,
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
vcpu_record->vcpu_id = perf_evsel__intval(evsel, sample,
|
vcpu_record->vcpu_id = evsel__intval(evsel, sample, vcpu_id_str);
|
||||||
vcpu_id_str);
|
|
||||||
thread__set_priv(thread, vcpu_record);
|
thread__set_priv(thread, vcpu_record);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -48,7 +48,7 @@ struct lock_stat {
|
||||||
struct rb_node rb; /* used for sorting */
|
struct rb_node rb; /* used for sorting */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* FIXME: perf_evsel__intval() returns u64,
|
* FIXME: evsel__intval() returns u64,
|
||||||
* so address of lockdep_map should be dealed as 64bit.
|
* so address of lockdep_map should be dealed as 64bit.
|
||||||
* Is there more better solution?
|
* Is there more better solution?
|
||||||
*/
|
*/
|
||||||
|
@ -404,9 +404,9 @@ static int report_lock_acquire_event(struct evsel *evsel,
|
||||||
struct lock_stat *ls;
|
struct lock_stat *ls;
|
||||||
struct thread_stat *ts;
|
struct thread_stat *ts;
|
||||||
struct lock_seq_stat *seq;
|
struct lock_seq_stat *seq;
|
||||||
const char *name = perf_evsel__strval(evsel, sample, "name");
|
const char *name = evsel__strval(evsel, sample, "name");
|
||||||
u64 tmp = perf_evsel__intval(evsel, sample, "lockdep_addr");
|
u64 tmp = evsel__intval(evsel, sample, "lockdep_addr");
|
||||||
int flag = perf_evsel__intval(evsel, sample, "flag");
|
int flag = evsel__intval(evsel, sample, "flag");
|
||||||
|
|
||||||
memcpy(&addr, &tmp, sizeof(void *));
|
memcpy(&addr, &tmp, sizeof(void *));
|
||||||
|
|
||||||
|
@ -477,8 +477,8 @@ static int report_lock_acquired_event(struct evsel *evsel,
|
||||||
struct thread_stat *ts;
|
struct thread_stat *ts;
|
||||||
struct lock_seq_stat *seq;
|
struct lock_seq_stat *seq;
|
||||||
u64 contended_term;
|
u64 contended_term;
|
||||||
const char *name = perf_evsel__strval(evsel, sample, "name");
|
const char *name = evsel__strval(evsel, sample, "name");
|
||||||
u64 tmp = perf_evsel__intval(evsel, sample, "lockdep_addr");
|
u64 tmp = evsel__intval(evsel, sample, "lockdep_addr");
|
||||||
|
|
||||||
memcpy(&addr, &tmp, sizeof(void *));
|
memcpy(&addr, &tmp, sizeof(void *));
|
||||||
|
|
||||||
|
@ -539,8 +539,8 @@ static int report_lock_contended_event(struct evsel *evsel,
|
||||||
struct lock_stat *ls;
|
struct lock_stat *ls;
|
||||||
struct thread_stat *ts;
|
struct thread_stat *ts;
|
||||||
struct lock_seq_stat *seq;
|
struct lock_seq_stat *seq;
|
||||||
const char *name = perf_evsel__strval(evsel, sample, "name");
|
const char *name = evsel__strval(evsel, sample, "name");
|
||||||
u64 tmp = perf_evsel__intval(evsel, sample, "lockdep_addr");
|
u64 tmp = evsel__intval(evsel, sample, "lockdep_addr");
|
||||||
|
|
||||||
memcpy(&addr, &tmp, sizeof(void *));
|
memcpy(&addr, &tmp, sizeof(void *));
|
||||||
|
|
||||||
|
@ -594,8 +594,8 @@ static int report_lock_release_event(struct evsel *evsel,
|
||||||
struct lock_stat *ls;
|
struct lock_stat *ls;
|
||||||
struct thread_stat *ts;
|
struct thread_stat *ts;
|
||||||
struct lock_seq_stat *seq;
|
struct lock_seq_stat *seq;
|
||||||
const char *name = perf_evsel__strval(evsel, sample, "name");
|
const char *name = evsel__strval(evsel, sample, "name");
|
||||||
u64 tmp = perf_evsel__intval(evsel, sample, "lockdep_addr");
|
u64 tmp = evsel__intval(evsel, sample, "lockdep_addr");
|
||||||
|
|
||||||
memcpy(&addr, &tmp, sizeof(void *));
|
memcpy(&addr, &tmp, sizeof(void *));
|
||||||
|
|
||||||
|
|
|
@ -811,8 +811,8 @@ replay_wakeup_event(struct perf_sched *sched,
|
||||||
struct evsel *evsel, struct perf_sample *sample,
|
struct evsel *evsel, struct perf_sample *sample,
|
||||||
struct machine *machine __maybe_unused)
|
struct machine *machine __maybe_unused)
|
||||||
{
|
{
|
||||||
const char *comm = perf_evsel__strval(evsel, sample, "comm");
|
const char *comm = evsel__strval(evsel, sample, "comm");
|
||||||
const u32 pid = perf_evsel__intval(evsel, sample, "pid");
|
const u32 pid = evsel__intval(evsel, sample, "pid");
|
||||||
struct task_desc *waker, *wakee;
|
struct task_desc *waker, *wakee;
|
||||||
|
|
||||||
if (verbose > 0) {
|
if (verbose > 0) {
|
||||||
|
@ -833,11 +833,11 @@ static int replay_switch_event(struct perf_sched *sched,
|
||||||
struct perf_sample *sample,
|
struct perf_sample *sample,
|
||||||
struct machine *machine __maybe_unused)
|
struct machine *machine __maybe_unused)
|
||||||
{
|
{
|
||||||
const char *prev_comm = perf_evsel__strval(evsel, sample, "prev_comm"),
|
const char *prev_comm = evsel__strval(evsel, sample, "prev_comm"),
|
||||||
*next_comm = perf_evsel__strval(evsel, sample, "next_comm");
|
*next_comm = evsel__strval(evsel, sample, "next_comm");
|
||||||
const u32 prev_pid = perf_evsel__intval(evsel, sample, "prev_pid"),
|
const u32 prev_pid = evsel__intval(evsel, sample, "prev_pid"),
|
||||||
next_pid = perf_evsel__intval(evsel, sample, "next_pid");
|
next_pid = evsel__intval(evsel, sample, "next_pid");
|
||||||
const u64 prev_state = perf_evsel__intval(evsel, sample, "prev_state");
|
const u64 prev_state = evsel__intval(evsel, sample, "prev_state");
|
||||||
struct task_desc *prev, __maybe_unused *next;
|
struct task_desc *prev, __maybe_unused *next;
|
||||||
u64 timestamp0, timestamp = sample->time;
|
u64 timestamp0, timestamp = sample->time;
|
||||||
int cpu = sample->cpu;
|
int cpu = sample->cpu;
|
||||||
|
@ -1106,9 +1106,9 @@ static int latency_switch_event(struct perf_sched *sched,
|
||||||
struct perf_sample *sample,
|
struct perf_sample *sample,
|
||||||
struct machine *machine)
|
struct machine *machine)
|
||||||
{
|
{
|
||||||
const u32 prev_pid = perf_evsel__intval(evsel, sample, "prev_pid"),
|
const u32 prev_pid = evsel__intval(evsel, sample, "prev_pid"),
|
||||||
next_pid = perf_evsel__intval(evsel, sample, "next_pid");
|
next_pid = evsel__intval(evsel, sample, "next_pid");
|
||||||
const u64 prev_state = perf_evsel__intval(evsel, sample, "prev_state");
|
const u64 prev_state = evsel__intval(evsel, sample, "prev_state");
|
||||||
struct work_atoms *out_events, *in_events;
|
struct work_atoms *out_events, *in_events;
|
||||||
struct thread *sched_out, *sched_in;
|
struct thread *sched_out, *sched_in;
|
||||||
u64 timestamp0, timestamp = sample->time;
|
u64 timestamp0, timestamp = sample->time;
|
||||||
|
@ -1176,8 +1176,8 @@ static int latency_runtime_event(struct perf_sched *sched,
|
||||||
struct perf_sample *sample,
|
struct perf_sample *sample,
|
||||||
struct machine *machine)
|
struct machine *machine)
|
||||||
{
|
{
|
||||||
const u32 pid = perf_evsel__intval(evsel, sample, "pid");
|
const u32 pid = evsel__intval(evsel, sample, "pid");
|
||||||
const u64 runtime = perf_evsel__intval(evsel, sample, "runtime");
|
const u64 runtime = evsel__intval(evsel, sample, "runtime");
|
||||||
struct thread *thread = machine__findnew_thread(machine, -1, pid);
|
struct thread *thread = machine__findnew_thread(machine, -1, pid);
|
||||||
struct work_atoms *atoms = thread_atoms_search(&sched->atom_root, thread, &sched->cmp_pid);
|
struct work_atoms *atoms = thread_atoms_search(&sched->atom_root, thread, &sched->cmp_pid);
|
||||||
u64 timestamp = sample->time;
|
u64 timestamp = sample->time;
|
||||||
|
@ -1211,7 +1211,7 @@ static int latency_wakeup_event(struct perf_sched *sched,
|
||||||
struct perf_sample *sample,
|
struct perf_sample *sample,
|
||||||
struct machine *machine)
|
struct machine *machine)
|
||||||
{
|
{
|
||||||
const u32 pid = perf_evsel__intval(evsel, sample, "pid");
|
const u32 pid = evsel__intval(evsel, sample, "pid");
|
||||||
struct work_atoms *atoms;
|
struct work_atoms *atoms;
|
||||||
struct work_atom *atom;
|
struct work_atom *atom;
|
||||||
struct thread *wakee;
|
struct thread *wakee;
|
||||||
|
@ -1272,7 +1272,7 @@ static int latency_migrate_task_event(struct perf_sched *sched,
|
||||||
struct perf_sample *sample,
|
struct perf_sample *sample,
|
||||||
struct machine *machine)
|
struct machine *machine)
|
||||||
{
|
{
|
||||||
const u32 pid = perf_evsel__intval(evsel, sample, "pid");
|
const u32 pid = evsel__intval(evsel, sample, "pid");
|
||||||
u64 timestamp = sample->time;
|
u64 timestamp = sample->time;
|
||||||
struct work_atoms *atoms;
|
struct work_atoms *atoms;
|
||||||
struct work_atom *atom;
|
struct work_atom *atom;
|
||||||
|
@ -1526,7 +1526,7 @@ map__findnew_thread(struct perf_sched *sched, struct machine *machine, pid_t pid
|
||||||
static int map_switch_event(struct perf_sched *sched, struct evsel *evsel,
|
static int map_switch_event(struct perf_sched *sched, struct evsel *evsel,
|
||||||
struct perf_sample *sample, struct machine *machine)
|
struct perf_sample *sample, struct machine *machine)
|
||||||
{
|
{
|
||||||
const u32 next_pid = perf_evsel__intval(evsel, sample, "next_pid");
|
const u32 next_pid = evsel__intval(evsel, sample, "next_pid");
|
||||||
struct thread *sched_in;
|
struct thread *sched_in;
|
||||||
struct thread_runtime *tr;
|
struct thread_runtime *tr;
|
||||||
int new_shortname;
|
int new_shortname;
|
||||||
|
@ -1670,8 +1670,8 @@ static int process_sched_switch_event(struct perf_tool *tool,
|
||||||
{
|
{
|
||||||
struct perf_sched *sched = container_of(tool, struct perf_sched, tool);
|
struct perf_sched *sched = container_of(tool, struct perf_sched, tool);
|
||||||
int this_cpu = sample->cpu, err = 0;
|
int this_cpu = sample->cpu, err = 0;
|
||||||
u32 prev_pid = perf_evsel__intval(evsel, sample, "prev_pid"),
|
u32 prev_pid = evsel__intval(evsel, sample, "prev_pid"),
|
||||||
next_pid = perf_evsel__intval(evsel, sample, "next_pid");
|
next_pid = evsel__intval(evsel, sample, "next_pid");
|
||||||
|
|
||||||
if (sched->curr_pid[this_cpu] != (u32)-1) {
|
if (sched->curr_pid[this_cpu] != (u32)-1) {
|
||||||
/*
|
/*
|
||||||
|
@ -2004,8 +2004,8 @@ static void timehist_print_sample(struct perf_sched *sched,
|
||||||
u64 t, int state)
|
u64 t, int state)
|
||||||
{
|
{
|
||||||
struct thread_runtime *tr = thread__priv(thread);
|
struct thread_runtime *tr = thread__priv(thread);
|
||||||
const char *next_comm = perf_evsel__strval(evsel, sample, "next_comm");
|
const char *next_comm = evsel__strval(evsel, sample, "next_comm");
|
||||||
const u32 next_pid = perf_evsel__intval(evsel, sample, "next_pid");
|
const u32 next_pid = evsel__intval(evsel, sample, "next_pid");
|
||||||
u32 max_cpus = sched->max_cpu + 1;
|
u32 max_cpus = sched->max_cpu + 1;
|
||||||
char tstr[64];
|
char tstr[64];
|
||||||
char nstr[30];
|
char nstr[30];
|
||||||
|
@ -2137,7 +2137,7 @@ static bool is_idle_sample(struct perf_sample *sample,
|
||||||
{
|
{
|
||||||
/* pid 0 == swapper == idle task */
|
/* pid 0 == swapper == idle task */
|
||||||
if (strcmp(evsel__name(evsel), "sched:sched_switch") == 0)
|
if (strcmp(evsel__name(evsel), "sched:sched_switch") == 0)
|
||||||
return perf_evsel__intval(evsel, sample, "prev_pid") == 0;
|
return evsel__intval(evsel, sample, "prev_pid") == 0;
|
||||||
|
|
||||||
return sample->pid == 0;
|
return sample->pid == 0;
|
||||||
}
|
}
|
||||||
|
@ -2334,7 +2334,7 @@ static struct thread *timehist_get_thread(struct perf_sched *sched,
|
||||||
itr->last_thread = thread;
|
itr->last_thread = thread;
|
||||||
|
|
||||||
/* copy task callchain when entering to idle */
|
/* copy task callchain when entering to idle */
|
||||||
if (perf_evsel__intval(evsel, sample, "next_pid") == 0)
|
if (evsel__intval(evsel, sample, "next_pid") == 0)
|
||||||
save_idle_callchain(sched, itr, sample);
|
save_idle_callchain(sched, itr, sample);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2357,8 +2357,8 @@ static bool timehist_skip_sample(struct perf_sched *sched,
|
||||||
if (sched->idle_hist) {
|
if (sched->idle_hist) {
|
||||||
if (strcmp(evsel__name(evsel), "sched:sched_switch"))
|
if (strcmp(evsel__name(evsel), "sched:sched_switch"))
|
||||||
rc = true;
|
rc = true;
|
||||||
else if (perf_evsel__intval(evsel, sample, "prev_pid") != 0 &&
|
else if (evsel__intval(evsel, sample, "prev_pid") != 0 &&
|
||||||
perf_evsel__intval(evsel, sample, "next_pid") != 0)
|
evsel__intval(evsel, sample, "next_pid") != 0)
|
||||||
rc = true;
|
rc = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2409,7 +2409,7 @@ static int timehist_sched_wakeup_event(struct perf_tool *tool,
|
||||||
struct thread *thread;
|
struct thread *thread;
|
||||||
struct thread_runtime *tr = NULL;
|
struct thread_runtime *tr = NULL;
|
||||||
/* want pid of awakened task not pid in sample */
|
/* want pid of awakened task not pid in sample */
|
||||||
const u32 pid = perf_evsel__intval(evsel, sample, "pid");
|
const u32 pid = evsel__intval(evsel, sample, "pid");
|
||||||
|
|
||||||
thread = machine__findnew_thread(machine, 0, pid);
|
thread = machine__findnew_thread(machine, 0, pid);
|
||||||
if (thread == NULL)
|
if (thread == NULL)
|
||||||
|
@ -2445,8 +2445,8 @@ static void timehist_print_migration_event(struct perf_sched *sched,
|
||||||
return;
|
return;
|
||||||
|
|
||||||
max_cpus = sched->max_cpu + 1;
|
max_cpus = sched->max_cpu + 1;
|
||||||
ocpu = perf_evsel__intval(evsel, sample, "orig_cpu");
|
ocpu = evsel__intval(evsel, sample, "orig_cpu");
|
||||||
dcpu = perf_evsel__intval(evsel, sample, "dest_cpu");
|
dcpu = evsel__intval(evsel, sample, "dest_cpu");
|
||||||
|
|
||||||
thread = machine__findnew_thread(machine, sample->pid, sample->tid);
|
thread = machine__findnew_thread(machine, sample->pid, sample->tid);
|
||||||
if (thread == NULL)
|
if (thread == NULL)
|
||||||
|
@ -2493,7 +2493,7 @@ static int timehist_migrate_task_event(struct perf_tool *tool,
|
||||||
struct thread *thread;
|
struct thread *thread;
|
||||||
struct thread_runtime *tr = NULL;
|
struct thread_runtime *tr = NULL;
|
||||||
/* want pid of migrated task not pid in sample */
|
/* want pid of migrated task not pid in sample */
|
||||||
const u32 pid = perf_evsel__intval(evsel, sample, "pid");
|
const u32 pid = evsel__intval(evsel, sample, "pid");
|
||||||
|
|
||||||
thread = machine__findnew_thread(machine, 0, pid);
|
thread = machine__findnew_thread(machine, 0, pid);
|
||||||
if (thread == NULL)
|
if (thread == NULL)
|
||||||
|
@ -2524,8 +2524,7 @@ static int timehist_sched_change_event(struct perf_tool *tool,
|
||||||
struct thread_runtime *tr = NULL;
|
struct thread_runtime *tr = NULL;
|
||||||
u64 tprev, t = sample->time;
|
u64 tprev, t = sample->time;
|
||||||
int rc = 0;
|
int rc = 0;
|
||||||
int state = perf_evsel__intval(evsel, sample, "prev_state");
|
int state = evsel__intval(evsel, sample, "prev_state");
|
||||||
|
|
||||||
|
|
||||||
if (machine__resolve(machine, &al, sample) < 0) {
|
if (machine__resolve(machine, &al, sample) < 0) {
|
||||||
pr_err("problem processing %d event. skipping it\n",
|
pr_err("problem processing %d event. skipping it\n",
|
||||||
|
|
|
@ -579,8 +579,8 @@ process_sample_cpu_idle(struct timechart *tchart __maybe_unused,
|
||||||
struct perf_sample *sample,
|
struct perf_sample *sample,
|
||||||
const char *backtrace __maybe_unused)
|
const char *backtrace __maybe_unused)
|
||||||
{
|
{
|
||||||
u32 state = perf_evsel__intval(evsel, sample, "state");
|
u32 state = evsel__intval(evsel, sample, "state");
|
||||||
u32 cpu_id = perf_evsel__intval(evsel, sample, "cpu_id");
|
u32 cpu_id = evsel__intval(evsel, sample, "cpu_id");
|
||||||
|
|
||||||
if (state == (u32)PWR_EVENT_EXIT)
|
if (state == (u32)PWR_EVENT_EXIT)
|
||||||
c_state_end(tchart, cpu_id, sample->time);
|
c_state_end(tchart, cpu_id, sample->time);
|
||||||
|
@ -595,8 +595,8 @@ process_sample_cpu_frequency(struct timechart *tchart,
|
||||||
struct perf_sample *sample,
|
struct perf_sample *sample,
|
||||||
const char *backtrace __maybe_unused)
|
const char *backtrace __maybe_unused)
|
||||||
{
|
{
|
||||||
u32 state = perf_evsel__intval(evsel, sample, "state");
|
u32 state = evsel__intval(evsel, sample, "state");
|
||||||
u32 cpu_id = perf_evsel__intval(evsel, sample, "cpu_id");
|
u32 cpu_id = evsel__intval(evsel, sample, "cpu_id");
|
||||||
|
|
||||||
p_state_change(tchart, cpu_id, sample->time, state);
|
p_state_change(tchart, cpu_id, sample->time, state);
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -608,9 +608,9 @@ process_sample_sched_wakeup(struct timechart *tchart,
|
||||||
struct perf_sample *sample,
|
struct perf_sample *sample,
|
||||||
const char *backtrace)
|
const char *backtrace)
|
||||||
{
|
{
|
||||||
u8 flags = perf_evsel__intval(evsel, sample, "common_flags");
|
u8 flags = evsel__intval(evsel, sample, "common_flags");
|
||||||
int waker = perf_evsel__intval(evsel, sample, "common_pid");
|
int waker = evsel__intval(evsel, sample, "common_pid");
|
||||||
int wakee = perf_evsel__intval(evsel, sample, "pid");
|
int wakee = evsel__intval(evsel, sample, "pid");
|
||||||
|
|
||||||
sched_wakeup(tchart, sample->cpu, sample->time, waker, wakee, flags, backtrace);
|
sched_wakeup(tchart, sample->cpu, sample->time, waker, wakee, flags, backtrace);
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -622,9 +622,9 @@ process_sample_sched_switch(struct timechart *tchart,
|
||||||
struct perf_sample *sample,
|
struct perf_sample *sample,
|
||||||
const char *backtrace)
|
const char *backtrace)
|
||||||
{
|
{
|
||||||
int prev_pid = perf_evsel__intval(evsel, sample, "prev_pid");
|
int prev_pid = evsel__intval(evsel, sample, "prev_pid");
|
||||||
int next_pid = perf_evsel__intval(evsel, sample, "next_pid");
|
int next_pid = evsel__intval(evsel, sample, "next_pid");
|
||||||
u64 prev_state = perf_evsel__intval(evsel, sample, "prev_state");
|
u64 prev_state = evsel__intval(evsel, sample, "prev_state");
|
||||||
|
|
||||||
sched_switch(tchart, sample->cpu, sample->time, prev_pid, next_pid,
|
sched_switch(tchart, sample->cpu, sample->time, prev_pid, next_pid,
|
||||||
prev_state, backtrace);
|
prev_state, backtrace);
|
||||||
|
@ -638,8 +638,8 @@ process_sample_power_start(struct timechart *tchart __maybe_unused,
|
||||||
struct perf_sample *sample,
|
struct perf_sample *sample,
|
||||||
const char *backtrace __maybe_unused)
|
const char *backtrace __maybe_unused)
|
||||||
{
|
{
|
||||||
u64 cpu_id = perf_evsel__intval(evsel, sample, "cpu_id");
|
u64 cpu_id = evsel__intval(evsel, sample, "cpu_id");
|
||||||
u64 value = perf_evsel__intval(evsel, sample, "value");
|
u64 value = evsel__intval(evsel, sample, "value");
|
||||||
|
|
||||||
c_state_start(cpu_id, sample->time, value);
|
c_state_start(cpu_id, sample->time, value);
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -661,8 +661,8 @@ process_sample_power_frequency(struct timechart *tchart,
|
||||||
struct perf_sample *sample,
|
struct perf_sample *sample,
|
||||||
const char *backtrace __maybe_unused)
|
const char *backtrace __maybe_unused)
|
||||||
{
|
{
|
||||||
u64 cpu_id = perf_evsel__intval(evsel, sample, "cpu_id");
|
u64 cpu_id = evsel__intval(evsel, sample, "cpu_id");
|
||||||
u64 value = perf_evsel__intval(evsel, sample, "value");
|
u64 value = evsel__intval(evsel, sample, "value");
|
||||||
|
|
||||||
p_state_change(tchart, cpu_id, sample->time, value);
|
p_state_change(tchart, cpu_id, sample->time, value);
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -843,7 +843,7 @@ process_enter_read(struct timechart *tchart,
|
||||||
struct evsel *evsel,
|
struct evsel *evsel,
|
||||||
struct perf_sample *sample)
|
struct perf_sample *sample)
|
||||||
{
|
{
|
||||||
long fd = perf_evsel__intval(evsel, sample, "fd");
|
long fd = evsel__intval(evsel, sample, "fd");
|
||||||
return pid_begin_io_sample(tchart, sample->tid, IOTYPE_READ,
|
return pid_begin_io_sample(tchart, sample->tid, IOTYPE_READ,
|
||||||
sample->time, fd);
|
sample->time, fd);
|
||||||
}
|
}
|
||||||
|
@ -853,7 +853,7 @@ process_exit_read(struct timechart *tchart,
|
||||||
struct evsel *evsel,
|
struct evsel *evsel,
|
||||||
struct perf_sample *sample)
|
struct perf_sample *sample)
|
||||||
{
|
{
|
||||||
long ret = perf_evsel__intval(evsel, sample, "ret");
|
long ret = evsel__intval(evsel, sample, "ret");
|
||||||
return pid_end_io_sample(tchart, sample->tid, IOTYPE_READ,
|
return pid_end_io_sample(tchart, sample->tid, IOTYPE_READ,
|
||||||
sample->time, ret);
|
sample->time, ret);
|
||||||
}
|
}
|
||||||
|
@ -863,7 +863,7 @@ process_enter_write(struct timechart *tchart,
|
||||||
struct evsel *evsel,
|
struct evsel *evsel,
|
||||||
struct perf_sample *sample)
|
struct perf_sample *sample)
|
||||||
{
|
{
|
||||||
long fd = perf_evsel__intval(evsel, sample, "fd");
|
long fd = evsel__intval(evsel, sample, "fd");
|
||||||
return pid_begin_io_sample(tchart, sample->tid, IOTYPE_WRITE,
|
return pid_begin_io_sample(tchart, sample->tid, IOTYPE_WRITE,
|
||||||
sample->time, fd);
|
sample->time, fd);
|
||||||
}
|
}
|
||||||
|
@ -873,7 +873,7 @@ process_exit_write(struct timechart *tchart,
|
||||||
struct evsel *evsel,
|
struct evsel *evsel,
|
||||||
struct perf_sample *sample)
|
struct perf_sample *sample)
|
||||||
{
|
{
|
||||||
long ret = perf_evsel__intval(evsel, sample, "ret");
|
long ret = evsel__intval(evsel, sample, "ret");
|
||||||
return pid_end_io_sample(tchart, sample->tid, IOTYPE_WRITE,
|
return pid_end_io_sample(tchart, sample->tid, IOTYPE_WRITE,
|
||||||
sample->time, ret);
|
sample->time, ret);
|
||||||
}
|
}
|
||||||
|
@ -883,7 +883,7 @@ process_enter_sync(struct timechart *tchart,
|
||||||
struct evsel *evsel,
|
struct evsel *evsel,
|
||||||
struct perf_sample *sample)
|
struct perf_sample *sample)
|
||||||
{
|
{
|
||||||
long fd = perf_evsel__intval(evsel, sample, "fd");
|
long fd = evsel__intval(evsel, sample, "fd");
|
||||||
return pid_begin_io_sample(tchart, sample->tid, IOTYPE_SYNC,
|
return pid_begin_io_sample(tchart, sample->tid, IOTYPE_SYNC,
|
||||||
sample->time, fd);
|
sample->time, fd);
|
||||||
}
|
}
|
||||||
|
@ -893,7 +893,7 @@ process_exit_sync(struct timechart *tchart,
|
||||||
struct evsel *evsel,
|
struct evsel *evsel,
|
||||||
struct perf_sample *sample)
|
struct perf_sample *sample)
|
||||||
{
|
{
|
||||||
long ret = perf_evsel__intval(evsel, sample, "ret");
|
long ret = evsel__intval(evsel, sample, "ret");
|
||||||
return pid_end_io_sample(tchart, sample->tid, IOTYPE_SYNC,
|
return pid_end_io_sample(tchart, sample->tid, IOTYPE_SYNC,
|
||||||
sample->time, ret);
|
sample->time, ret);
|
||||||
}
|
}
|
||||||
|
@ -903,7 +903,7 @@ process_enter_tx(struct timechart *tchart,
|
||||||
struct evsel *evsel,
|
struct evsel *evsel,
|
||||||
struct perf_sample *sample)
|
struct perf_sample *sample)
|
||||||
{
|
{
|
||||||
long fd = perf_evsel__intval(evsel, sample, "fd");
|
long fd = evsel__intval(evsel, sample, "fd");
|
||||||
return pid_begin_io_sample(tchart, sample->tid, IOTYPE_TX,
|
return pid_begin_io_sample(tchart, sample->tid, IOTYPE_TX,
|
||||||
sample->time, fd);
|
sample->time, fd);
|
||||||
}
|
}
|
||||||
|
@ -913,7 +913,7 @@ process_exit_tx(struct timechart *tchart,
|
||||||
struct evsel *evsel,
|
struct evsel *evsel,
|
||||||
struct perf_sample *sample)
|
struct perf_sample *sample)
|
||||||
{
|
{
|
||||||
long ret = perf_evsel__intval(evsel, sample, "ret");
|
long ret = evsel__intval(evsel, sample, "ret");
|
||||||
return pid_end_io_sample(tchart, sample->tid, IOTYPE_TX,
|
return pid_end_io_sample(tchart, sample->tid, IOTYPE_TX,
|
||||||
sample->time, ret);
|
sample->time, ret);
|
||||||
}
|
}
|
||||||
|
@ -923,7 +923,7 @@ process_enter_rx(struct timechart *tchart,
|
||||||
struct evsel *evsel,
|
struct evsel *evsel,
|
||||||
struct perf_sample *sample)
|
struct perf_sample *sample)
|
||||||
{
|
{
|
||||||
long fd = perf_evsel__intval(evsel, sample, "fd");
|
long fd = evsel__intval(evsel, sample, "fd");
|
||||||
return pid_begin_io_sample(tchart, sample->tid, IOTYPE_RX,
|
return pid_begin_io_sample(tchart, sample->tid, IOTYPE_RX,
|
||||||
sample->time, fd);
|
sample->time, fd);
|
||||||
}
|
}
|
||||||
|
@ -933,7 +933,7 @@ process_exit_rx(struct timechart *tchart,
|
||||||
struct evsel *evsel,
|
struct evsel *evsel,
|
||||||
struct perf_sample *sample)
|
struct perf_sample *sample)
|
||||||
{
|
{
|
||||||
long ret = perf_evsel__intval(evsel, sample, "ret");
|
long ret = evsel__intval(evsel, sample, "ret");
|
||||||
return pid_end_io_sample(tchart, sample->tid, IOTYPE_RX,
|
return pid_end_io_sample(tchart, sample->tid, IOTYPE_RX,
|
||||||
sample->time, ret);
|
sample->time, ret);
|
||||||
}
|
}
|
||||||
|
@ -943,7 +943,7 @@ process_enter_poll(struct timechart *tchart,
|
||||||
struct evsel *evsel,
|
struct evsel *evsel,
|
||||||
struct perf_sample *sample)
|
struct perf_sample *sample)
|
||||||
{
|
{
|
||||||
long fd = perf_evsel__intval(evsel, sample, "fd");
|
long fd = evsel__intval(evsel, sample, "fd");
|
||||||
return pid_begin_io_sample(tchart, sample->tid, IOTYPE_POLL,
|
return pid_begin_io_sample(tchart, sample->tid, IOTYPE_POLL,
|
||||||
sample->time, fd);
|
sample->time, fd);
|
||||||
}
|
}
|
||||||
|
@ -953,7 +953,7 @@ process_exit_poll(struct timechart *tchart,
|
||||||
struct evsel *evsel,
|
struct evsel *evsel,
|
||||||
struct perf_sample *sample)
|
struct perf_sample *sample)
|
||||||
{
|
{
|
||||||
long ret = perf_evsel__intval(evsel, sample, "ret");
|
long ret = evsel__intval(evsel, sample, "ret");
|
||||||
return pid_end_io_sample(tchart, sample->tid, IOTYPE_POLL,
|
return pid_end_io_sample(tchart, sample->tid, IOTYPE_POLL,
|
||||||
sample->time, ret);
|
sample->time, ret);
|
||||||
}
|
}
|
||||||
|
|
|
@ -370,7 +370,7 @@ static int perf_evsel__init_tp_uint_field(struct evsel *evsel,
|
||||||
struct tp_field *field,
|
struct tp_field *field,
|
||||||
const char *name)
|
const char *name)
|
||||||
{
|
{
|
||||||
struct tep_format_field *format_field = perf_evsel__field(evsel, name);
|
struct tep_format_field *format_field = evsel__field(evsel, name);
|
||||||
|
|
||||||
if (format_field == NULL)
|
if (format_field == NULL)
|
||||||
return -1;
|
return -1;
|
||||||
|
@ -386,7 +386,7 @@ static int perf_evsel__init_tp_ptr_field(struct evsel *evsel,
|
||||||
struct tp_field *field,
|
struct tp_field *field,
|
||||||
const char *name)
|
const char *name)
|
||||||
{
|
{
|
||||||
struct tep_format_field *format_field = perf_evsel__field(evsel, name);
|
struct tep_format_field *format_field = evsel__field(evsel, name);
|
||||||
|
|
||||||
if (format_field == NULL)
|
if (format_field == NULL)
|
||||||
return -1;
|
return -1;
|
||||||
|
@ -423,9 +423,9 @@ static int perf_evsel__init_augmented_syscall_tp(struct evsel *evsel, struct evs
|
||||||
struct syscall_tp *sc = evsel__syscall_tp(evsel);
|
struct syscall_tp *sc = evsel__syscall_tp(evsel);
|
||||||
|
|
||||||
if (sc != NULL) {
|
if (sc != NULL) {
|
||||||
struct tep_format_field *syscall_id = perf_evsel__field(tp, "id");
|
struct tep_format_field *syscall_id = evsel__field(tp, "id");
|
||||||
if (syscall_id == NULL)
|
if (syscall_id == NULL)
|
||||||
syscall_id = perf_evsel__field(tp, "__syscall_nr");
|
syscall_id = evsel__field(tp, "__syscall_nr");
|
||||||
if (syscall_id == NULL ||
|
if (syscall_id == NULL ||
|
||||||
__tp_field__init_uint(&sc->id, syscall_id->size, syscall_id->offset, evsel->needs_swap))
|
__tp_field__init_uint(&sc->id, syscall_id->size, syscall_id->offset, evsel->needs_swap))
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
@ -2531,7 +2531,7 @@ static int trace__vfs_getname(struct trace *trace, struct evsel *evsel,
|
||||||
size_t filename_len, entry_str_len, to_move;
|
size_t filename_len, entry_str_len, to_move;
|
||||||
ssize_t remaining_space;
|
ssize_t remaining_space;
|
||||||
char *pos;
|
char *pos;
|
||||||
const char *filename = perf_evsel__rawptr(evsel, sample, "pathname");
|
const char *filename = evsel__rawptr(evsel, sample, "pathname");
|
||||||
|
|
||||||
if (!thread)
|
if (!thread)
|
||||||
goto out;
|
goto out;
|
||||||
|
@ -2587,7 +2587,7 @@ static int trace__sched_stat_runtime(struct trace *trace, struct evsel *evsel,
|
||||||
union perf_event *event __maybe_unused,
|
union perf_event *event __maybe_unused,
|
||||||
struct perf_sample *sample)
|
struct perf_sample *sample)
|
||||||
{
|
{
|
||||||
u64 runtime = perf_evsel__intval(evsel, sample, "runtime");
|
u64 runtime = evsel__intval(evsel, sample, "runtime");
|
||||||
double runtime_ms = (double)runtime / NSEC_PER_MSEC;
|
double runtime_ms = (double)runtime / NSEC_PER_MSEC;
|
||||||
struct thread *thread = machine__findnew_thread(trace->host,
|
struct thread *thread = machine__findnew_thread(trace->host,
|
||||||
sample->pid,
|
sample->pid,
|
||||||
|
@ -2606,10 +2606,10 @@ static int trace__sched_stat_runtime(struct trace *trace, struct evsel *evsel,
|
||||||
out_dump:
|
out_dump:
|
||||||
fprintf(trace->output, "%s: comm=%s,pid=%u,runtime=%" PRIu64 ",vruntime=%" PRIu64 ")\n",
|
fprintf(trace->output, "%s: comm=%s,pid=%u,runtime=%" PRIu64 ",vruntime=%" PRIu64 ")\n",
|
||||||
evsel->name,
|
evsel->name,
|
||||||
perf_evsel__strval(evsel, sample, "comm"),
|
evsel__strval(evsel, sample, "comm"),
|
||||||
(pid_t)perf_evsel__intval(evsel, sample, "pid"),
|
(pid_t)evsel__intval(evsel, sample, "pid"),
|
||||||
runtime,
|
runtime,
|
||||||
perf_evsel__intval(evsel, sample, "vruntime"));
|
evsel__intval(evsel, sample, "vruntime"));
|
||||||
goto out_put;
|
goto out_put;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3035,7 +3035,7 @@ static bool evlist__add_vfs_getname(struct evlist *evlist)
|
||||||
if (!strstarts(evsel__name(evsel), "probe:vfs_getname"))
|
if (!strstarts(evsel__name(evsel), "probe:vfs_getname"))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (perf_evsel__field(evsel, "pathname")) {
|
if (evsel__field(evsel, "pathname")) {
|
||||||
evsel->handler = trace__vfs_getname;
|
evsel->handler = trace__vfs_getname;
|
||||||
found = true;
|
found = true;
|
||||||
continue;
|
continue;
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
static int perf_evsel__test_field(struct evsel *evsel, const char *name,
|
static int perf_evsel__test_field(struct evsel *evsel, const char *name,
|
||||||
int size, bool should_be_signed)
|
int size, bool should_be_signed)
|
||||||
{
|
{
|
||||||
struct tep_format_field *field = perf_evsel__field(evsel, name);
|
struct tep_format_field *field = evsel__field(evsel, name);
|
||||||
int is_signed;
|
int is_signed;
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
|
|
||||||
|
|
|
@ -114,7 +114,7 @@ int test__syscall_openat_tp_fields(struct test *test __maybe_unused, int subtest
|
||||||
goto out_delete_evlist;
|
goto out_delete_evlist;
|
||||||
}
|
}
|
||||||
|
|
||||||
tp_flags = perf_evsel__intval(evsel, &sample, "flags");
|
tp_flags = evsel__intval(evsel, &sample, "flags");
|
||||||
|
|
||||||
if (flags != tp_flags) {
|
if (flags != tp_flags) {
|
||||||
pr_debug("%s: Expected flags=%#x, got %#x\n",
|
pr_debug("%s: Expected flags=%#x, got %#x\n",
|
||||||
|
|
|
@ -135,8 +135,8 @@ static int process_sample_event(struct evlist *evlist,
|
||||||
|
|
||||||
evsel = perf_evlist__id2evsel(evlist, sample.id);
|
evsel = perf_evlist__id2evsel(evlist, sample.id);
|
||||||
if (evsel == switch_tracking->switch_evsel) {
|
if (evsel == switch_tracking->switch_evsel) {
|
||||||
next_tid = perf_evsel__intval(evsel, &sample, "next_pid");
|
next_tid = evsel__intval(evsel, &sample, "next_pid");
|
||||||
prev_tid = perf_evsel__intval(evsel, &sample, "prev_pid");
|
prev_tid = evsel__intval(evsel, &sample, "prev_pid");
|
||||||
cpu = sample.cpu;
|
cpu = sample.cpu;
|
||||||
pr_debug3("sched_switch: cpu: %d prev_tid %d next_tid %d\n",
|
pr_debug3("sched_switch: cpu: %d prev_tid %d next_tid %d\n",
|
||||||
cpu, prev_tid, next_tid);
|
cpu, prev_tid, next_tid);
|
||||||
|
|
|
@ -2314,15 +2314,14 @@ int perf_evsel__parse_sample_timestamp(struct evsel *evsel,
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
struct tep_format_field *perf_evsel__field(struct evsel *evsel, const char *name)
|
struct tep_format_field *evsel__field(struct evsel *evsel, const char *name)
|
||||||
{
|
{
|
||||||
return tep_find_field(evsel->tp_format, name);
|
return tep_find_field(evsel->tp_format, name);
|
||||||
}
|
}
|
||||||
|
|
||||||
void *perf_evsel__rawptr(struct evsel *evsel, struct perf_sample *sample,
|
void *evsel__rawptr(struct evsel *evsel, struct perf_sample *sample, const char *name)
|
||||||
const char *name)
|
|
||||||
{
|
{
|
||||||
struct tep_format_field *field = perf_evsel__field(evsel, name);
|
struct tep_format_field *field = evsel__field(evsel, name);
|
||||||
int offset;
|
int offset;
|
||||||
|
|
||||||
if (!field)
|
if (!field)
|
||||||
|
@ -2377,10 +2376,9 @@ u64 format_field__intval(struct tep_format_field *field, struct perf_sample *sam
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
u64 perf_evsel__intval(struct evsel *evsel, struct perf_sample *sample,
|
u64 evsel__intval(struct evsel *evsel, struct perf_sample *sample, const char *name)
|
||||||
const char *name)
|
|
||||||
{
|
{
|
||||||
struct tep_format_field *field = perf_evsel__field(evsel, name);
|
struct tep_format_field *field = evsel__field(evsel, name);
|
||||||
|
|
||||||
if (!field)
|
if (!field)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
@ -241,23 +241,19 @@ void evsel__close(struct evsel *evsel);
|
||||||
|
|
||||||
struct perf_sample;
|
struct perf_sample;
|
||||||
|
|
||||||
void *perf_evsel__rawptr(struct evsel *evsel, struct perf_sample *sample,
|
void *evsel__rawptr(struct evsel *evsel, struct perf_sample *sample, const char *name);
|
||||||
const char *name);
|
u64 evsel__intval(struct evsel *evsel, struct perf_sample *sample, const char *name);
|
||||||
u64 perf_evsel__intval(struct evsel *evsel, struct perf_sample *sample,
|
|
||||||
const char *name);
|
|
||||||
|
|
||||||
static inline char *perf_evsel__strval(struct evsel *evsel,
|
static inline char *evsel__strval(struct evsel *evsel, struct perf_sample *sample, const char *name)
|
||||||
struct perf_sample *sample,
|
|
||||||
const char *name)
|
|
||||||
{
|
{
|
||||||
return perf_evsel__rawptr(evsel, sample, name);
|
return evsel__rawptr(evsel, sample, name);
|
||||||
}
|
}
|
||||||
|
|
||||||
struct tep_format_field;
|
struct tep_format_field;
|
||||||
|
|
||||||
u64 format_field__intval(struct tep_format_field *field, struct perf_sample *sample, bool needs_swap);
|
u64 format_field__intval(struct tep_format_field *field, struct perf_sample *sample, bool needs_swap);
|
||||||
|
|
||||||
struct tep_format_field *perf_evsel__field(struct evsel *evsel, const char *name);
|
struct tep_format_field *evsel__field(struct evsel *evsel, const char *name);
|
||||||
|
|
||||||
#define perf_evsel__match(evsel, t, c) \
|
#define perf_evsel__match(evsel, t, c) \
|
||||||
(evsel->core.attr.type == PERF_TYPE_##t && \
|
(evsel->core.attr.type == PERF_TYPE_##t && \
|
||||||
|
|
|
@ -2488,7 +2488,7 @@ static int intel_pt_process_switch(struct intel_pt *pt,
|
||||||
if (evsel != pt->switch_evsel)
|
if (evsel != pt->switch_evsel)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
tid = perf_evsel__intval(evsel, sample, "next_pid");
|
tid = evsel__intval(evsel, sample, "next_pid");
|
||||||
cpu = sample->cpu;
|
cpu = sample->cpu;
|
||||||
|
|
||||||
intel_pt_log("sched_switch: cpu %d tid %d time %"PRIu64" tsc %#"PRIx64"\n",
|
intel_pt_log("sched_switch: cpu %d tid %d time %"PRIu64" tsc %#"PRIx64"\n",
|
||||||
|
|
Loading…
Reference in New Issue
Block a user