Re: [PATCH v4 1/6] perf tools: Derive trigger class from auxtrace_snapshot

From: Wangnan (F)
Date: Mon Apr 18 2016 - 10:20:49 EST




On 2016/4/18 21:45, Jiri Olsa wrote:
On Mon, Apr 18, 2016 at 06:32:08AM +0000, Wang Nan wrote:
Use 'trigger' to model operations which need to be executed when
an event (a signal, for example) is observed.

States and transits:

OFF--(on)--> READY --(toggle)--> TOGGLED --(process)--> PROCESSING
^ | |
| | |
| (ready) (ready)
| | |
\__________________/______________________/

is_toggled and is_ready are two key functions to query the state of
a trigger. is_toggled means the event already happen; is_ready means the
trigger is waiting for the event.

'PROCESSING' represents a state the event happens and be observed, and
the processing is on the way so can't accept a new event immediately.
hum, I must be missing something.. but I dont see how you're
using this state except for smal window within:

if (auxtrace_snapshot_is_toggled()) {
-> auxtrace_snapshot_process();
if (!auxtrace_snapshot_is_error())
-> record__read_auxtrace_snapshot(rec);

but no other place queries or depends on this state

Right.

Since we are creating a new class, I think we can make code simpler by merging
all state variables into trigger.

Without this state we must keep 'auxtrace_record__snapshot_started'.

I think merging it into trigger class makes the whole program a little
bit simpler. Or do you think keeping trigger class simpler whould be better?

Thank you.