It's a reasonable function partitioning. How about we define an interface like 
syslog_channel_s between note and driver? So we can plug in the different 
transport like syslog.

> -----Original Message-----
> From: Nakamura, Yuuichi (Sony) <yuuichi.a.nakam...@sony.com>
> Sent: Wednesday, July 1, 2020 3:01 PM
> To: dev@nuttx.apache.org
> Cc: Nakamura, Yuuichi (Sony) <yuuichi.a.nakam...@sony.com>
> Subject: RE: NXView
> 
> Hi all,
> 
> After merging my syscall instrumentation patch into 
> feature/syscall-instrumentation branch, I had considered how to incorporate my
> task trace support into the mainline.
> 
> Currently sched_note.c has the codes to generate notes and buffer management 
> functions.
> notes are generated all the time if configured to be enabled. (attached fig.1)
> 
> In task tracer, I add the filter logic for some note types, and all notes 
> have to be enabled explicitly.
> The buffer management functions are also used by the task tracer, but the 
> hardware solution doesn't require them.
> 
> So, I propose the new configuration CONFIG_SCHED_INSTRUMENTATION_FILTER in 
> sched_note.c.
> CONFIG_SCHED_INSTRUMENTATION_FILTER only enables the filter logic in each 
> note types.
> And change CONFIG_SCHED_INSTRUMENTATION_BUFFER to make enable only buffer 
> management logic, not note generation.
> (attached fig.2)
> 
> If hardware solution needs only filter logic, by enabling 
> CONFIG_SCHED_INSTRUMENTATION_FILTER and disabling
> CONFIG_SCHED_INSTRUMENTATION_BUFFER can realize it.
> sched_note_add() (previously note_add() static function in sched_note.c) is 
> called when some kernel instrumentation event occured
> and it can be implemented to send the note data to the external hardware 
> device. (attached fig.3)
> 
> The task tracer defines both CONFIG_SCHED_INSTRUMENTATION_FILTER and 
> CONFIG_SCHED_INSTRUMENTATION_BUFFER.
> And if only CONFIG_SCHED_INSTRUMENTATION_BUFFER is defined, the existing 
> sched_note specification remains.
> 
> How about this proposal ?
> I'm fixing my task trace code as the patch of existing sched_note.c and 
> note_driver.c.
> After that, I'd like to send new pull request to 
> feature/syscall-instrumentation branch for the review.
> 
> Thanks,
> Yuuichi Nakamura
> 
> > -----Original Message-----
> > From: Nakamura, Yuuichi (Sony)
> > Sent: Wednesday, June 17, 2020 2:43 PM
> > To: dev@nuttx.apache.org
> > Cc: Nakamura, Yuuichi (Sony) <yuuichi.a.nakam...@sony.com>
> > Subject: RE: NXView
> >
> > Thanks for valuable comments.
> > I have no objection to your advice that overlapping the similar
> > implementation should be avoided.
> > Let me make change the current implementation into the extension of
> > the existing codes, and if there are any problems in extending, please let 
> > me discuss again.
> >
> > Regarding to another issue, the place of the application side code, it
> > is because I have wanted to implement  trace cmd "<command>"
> > It gets the trace while executing the specified command line like
> > "time" command of nsh.
> > It requires nsh_parse() nshlib internal API.
> >
> > Thanks,
> > Yuuichi Nakamura
> >
> > > -----Original Message-----
> > > From: Gregory Nutt <spudan...@gmail.com>
> > > Sent: Wednesday, June 17, 2020 11:13 AM
> > > To: dev@nuttx.apache.org
> > > Subject: Re: NXView
> > >
> > >
> > > > The major differences are:
> > > >
> > > > - Different trace data format between the accumulated data in the
> > > > memory and
> > > /dev/tracer output
> > > >    It is because to reduce the trace data size in the memory. The
> > > > accumulated
> > > data contains packed (not aligned) values and
> > > >    task is recorded by its PID, not the name. The correspondence
> > > > between PID
> > > and task name string is hold in the separated task name buffer.
> > > >    On the other hand, the output from /dev/tracer contains aligned
> > > > words and
> > > contains the task name string for each trace entries.
> > > >    It is because easy to handle the data by the application code
> > > > (nsh trace
> > > command).
> > >
> > > That is a trivial difference and there are some misconceptions.
> > >
> > > The structures can be packed by simply adding the packed attribute
> > > to the structures.  That does not justify a redesign.
> > >
> > > The current implementation does *not* use the task name, it uses the
> > > pid.  The task name is provided only when the task is created.  The
> > > provides the associated between pid and name. Thereafter only the pid is 
> > > uses.
> > >
> > > Your implementation has two much overlap and should not come
> > > upstream as a separate implementation.  Extensions and improvements
> > > to the existing implementation are welcome, however.
> > >
> > > Greg


Reply via email to