incubator-nuttx/drivers/note/Kconfig

107 lines
3.8 KiB
Plaintext

#
# For a description of the syntax of this configuration file,
# see the file kconfig-language.txt in the NuttX tools repository.
#
menuconfig DRIVER_NOTE
bool "Note Driver Support"
depends on SCHED_INSTRUMENTATION
default n
if DRIVER_NOTE
choice
prompt "Note driver selection"
default DRIVER_NOTERAM
config DRIVER_NOTERAM
bool "Note RAM driver"
depends on !SCHED_INSTRUMENTATION_CSECTION && (!SCHED_INSTRUMENTATION_SPINLOCK || !SMP)
---help---
If this option is selected, then in-memory buffering logic is
enabled to capture scheduler instrumentation data. This has
the advantage that (1) the platform logic does not have to provide
the sched_note_* interfaces described for the previous settings.
Instead, the buffering logic catches all of these. It encodes
timestamps the scheduler note and adds the note to an in-memory,
circular buffer. And (2) buffering the scheduler instrumentation
data (versus performing some output operation) minimizes the impact
of the instrumentation on the behavior of the system. If the in-memory
buffer becomes full, then older notes are overwritten by newer notes.
A character driver is provided which can be used by an application
to read data from the in-memory, scheduler instrumentation "note"
buffer.
NOTE: This option is not available if critical sections are being
monitored (nor if spinlocks are being monitored in SMP configuration)
because there would be a logical error in the design in those cases.
That error is that these interfaces call enter_ and leave_critical_section
(which use spinlocks in SMP mode). That means that each call to
sched_note_get() causes several additional entries to be added from
the note buffer in order to remove one entry.
config DRIVER_NOTEARCH
bool "Note Arch driver"
---help---
The note driver is provided by arch specific code.
config DRIVER_NOTELOG
bool "Note syslog driver"
select SCHED_INSTRUMENTATION_EXTERNAL
---help---
The note driver output to syslog.
config SEGGER_SYSVIEW
bool "Note SEGGER SystemView driver"
select SEGGER_RTT
select SCHED_INSTRUMENTATION_EXTERNAL
---help---
SystemView is a real-time recording and visualization tool for embedded
systems that reveals the true runtime behavior of an application,
going far deeper than the system insights provided by debuggers. This is
particularly effective when developing and working with complex embedded
systems comprising multiple threads and interrupts. SystemView can ensure
unintended interactions and resource conflicts.
endchoice
config DRIVER_NOTERAM_BUFSIZE
int "Note RAM buffer size"
depends on DRIVER_NOTERAM
default 2048
---help---
The size of the in-memory, circular instrumentation buffer (in bytes).
config DRIVER_NOTERAM_TASKNAME_BUFSIZE
int "Note RAM task name buffer size"
depends on DRIVER_NOTERAM
default 256 if TASK_NAME_SIZE > 0
default 0 if TASK_NAME_SIZE = 0
---help---
The size of the in-memory task name buffer (in bytes).
The buffer is used to hold the name of the task during instrumentation.
Trace dump can find and show a task name corresponding to given pid in
the instrumentation data by using this buffer.
If 0 is specified, this feature is disabled and trace dump shows only
the name of the newly created task.
config DRIVER_NOTERAM_DEFAULT_NOOVERWRITE
bool "Disable overwrite by default"
depends on DRIVER_NOTERAM
default n
---help---
Disables overwriting old notes in the circular buffer when the buffer
is full by default. This is useful to keep instrumentation data of the
beginning of a system boot.
config DRIVER_NOTECTL
bool "Scheduler instrumentation filter control driver"
default n
depends on SCHED_INSTRUMENTATION_FILTER
---help---
If this option is selected, the instrumentation filter control device
/dev/notectl is provided.
endif