lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:   Tue, 7 May 2019 18:27:15 +0000
From:   Song Liu <songliubraving@...com>
To:     Jiri Olsa <jolsa@...hat.com>
CC:     Jiri Olsa <jolsa@...nel.org>,
        Arnaldo Carvalho de Melo <acme@...nel.org>,
        lkml <linux-kernel@...r.kernel.org>,
        Ingo Molnar <mingo@...nel.org>,
        "Namhyung Kim" <namhyung@...nel.org>,
        Alexander Shishkin <alexander.shishkin@...ux.intel.com>,
        Peter Zijlstra <a.p.zijlstra@...llo.nl>,
        Stanislav Fomichev <sdf@...ichev.me>,
        Adrian Hunter <adrian.hunter@...el.com>,
        Andi Kleen <ak@...ux.intel.com>
Subject: Re: [PATCH 10/12] perf script: Add --show-bpf-events to show eBPF
 related events



> On May 7, 2019, at 1:18 AM, Jiri Olsa <jolsa@...hat.com> wrote:
> 
> On Mon, May 06, 2019 at 09:42:44PM +0000, Song Liu wrote:
> 
> SNIP
> 
>>> +static int
>>> +process_bpf_events(struct perf_tool *tool __maybe_unused,
>>> +		   union perf_event *event,
>>> +		   struct perf_sample *sample,
>>> +		   struct machine *machine)
>>> +{
>>> +	struct thread *thread;
>>> +	struct perf_script *script = container_of(tool, struct perf_script, tool);
>>> +	struct perf_session *session = script->session;
>>> +	struct perf_evsel *evsel = perf_evlist__id2evsel(session->evlist, sample->id);
>>> +
>>> +	if (machine__process_ksymbol(machine, event, sample) < 0)
>>> +		return -1;
>>> +
>>> +	if (!evsel->attr.sample_id_all) {
>>> +		perf_event__fprintf(event, stdout);
>>> +		return 0;
>>> +	}
>>> +
>>> +	thread = machine__findnew_thread(machine, sample->pid, sample->tid);
>>> +	if (thread == NULL) {
>>> +		pr_debug("problem processing MMAP event, skipping it.\n");
>>> +		return -1;
>>> +	}
>>> +
>>> +	if (!filter_cpu(sample)) {
>>> +		perf_sample__fprintf_start(sample, thread, evsel,
>>> +					   event->header.type, stdout);
>>> +		perf_event__fprintf(event, stdout);
>>> +	}
>>> +
>>> +	thread__put(thread);
>>> +	return 0;
>>> +}
>>> +
>>> static void sig_handler(int sig __maybe_unused)
>>> {
>>> 	session_done = 1;
>>> @@ -2420,6 +2456,10 @@ static int __cmd_script(struct perf_script *script)
>>> 		script->tool.ordered_events = false;
>>> 		script->tool.finished_round = process_finished_round_event;
>>> 	}
>>> +	if (script->show_bpf_events) {
>>> +		script->tool.ksymbol   = process_bpf_events;
>>> +		script->tool.bpf_event = process_bpf_events;
>> 
>> Why do we need both set to process_bpf_events?
> 
> --show-*-events option is there to display all the related events for given '*'
> 
> we want to display both ksymbol and bpf_event in here,
> process_bpf_events takes care of it for both of them

I see. Thanks for the explanation!

Song

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ