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]
Message-ID: <20110301164926.GD26068@ghostprotocols.net>
Date:	Tue, 1 Mar 2011 13:49:26 -0300
From:	Arnaldo Carvalho de Melo <acme@...stprotocols.net>
To:	David Ahern <daahern@...co.com>
Cc:	Frederic Weisbecker <fweisbec@...il.com>,
	linux-perf-users@...r.kernel.org, linux-kernel@...r.kernel.org,
	mingo@...e.hu, peterz@...radead.org, paulus@...ba.org,
	tglx@...utronix.de
Subject: Re: [PATCH 4/6] perf script: dump software events too

Em Tue, Mar 01, 2011 at 09:11:20AM -0700, David Ahern escreveu:
> On 03/01/2011 08:11 AM, Frederic Weisbecker wrote:
> > Why shouldn't it be designed to dump software events? It's called print_event().
> > Its current version is rather something I would call "limited". But it
> > was not designed to be limited.

> That's because its origins are trace specific. Per last week's thread,
> perf-script was perf-trace until Nov 2010. perf-script deals with
> tracepoints.

> > Ideally, we should have print_tracepoint_event() in
> > trace-event-parse.c, print_software_event()
> > where you want, and have print_event() in builtin-script.c that wraps on those.
> 
> process_event does not take the event sample, it takes elements of it:
> 
> struct scripting_ops {
> ...
>     void (*process_event) (int cpu, void *data, int size,
>                    unsigned long long nsecs, char *comm);

I still have to read the entire thread, but this definetely should
receive "struct perf_sample", i.e. the parsed sample and the 'struct
thread' from where it can get the comm, etc

Look at the process_event for builtin-script.c:

                scripting_ops->process_event(sample->cpu,
					     sample->raw_data,
                                             sample->raw_size,
                                             sample->time,
					     thread->comm);


I'd change it to:

                scripting_ops->process_event(event, sample, thread);

Or even short circuit it completely modulo debugging, becoming:

static int process_sample_event(union perf_event *event,
                                struct perf_sample *sample,
                                struct perf_session *session)
{
	if (debug_mode) {
		if (sample->time < last_timestamp) {
			pr_err("Samples misordered, previous: %" PRIu64
			       " this: %" PRIu64 "\n", last_timestamp,
				sample->time);
				nr_unordered++;
		}
		last_timestamp = sample->time;
	} else {
		scripting_ops->process_event(event, sample, session);
		session->hists.stats.total_period += sample->period;
	}
        return 0;
}

Script modules may then do their thread accounting if comms are asked
for, etc.

- Arnaldo
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ