nuttx/drivers/note/Kconfig
yinshengkai 5d8cdeaea8 note: print without relying on format strings
Signed-off-by: yinshengkai <yinshengkai@xiaomi.com>
2024-10-25 19:04:02 +08:00

115 lines
3.6 KiB
Plaintext

#
# For a description of the syntax of this configuration file,
# see the file kconfig-language.txt in the NuttX tools repository.
#
config DRIVERS_NOTE
bool "Note Driver Support"
depends on SCHED_INSTRUMENTATION
default n
if DRIVERS_NOTE
config DRIVERS_NOTE_MAX
int "Maximum number of sched_note drivers"
default 1
---help---
sched_note supports the maximum number of drivers
config DRIVERS_NOTE_TASKNAME_BUFSIZE
int "Note task name buffer size"
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 DRIVERS_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.
config DRIVERS_NOTERAM
bool "Note RAM driver"
default y
---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.
if DRIVERS_NOTERAM
config DRIVERS_NOTERAM_BUFSIZE
int "Note RAM buffer size"
default 2048
---help---
The size of the in-memory, circular instrumentation buffer (in bytes).
config DRIVERS_NOTERAM_DEFAULT_NOOVERWRITE
bool "Disable overwrite by default"
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 DRIVERS_NOTERAM_CRASH_DUMP
bool "Dump noteram buffer on panic"
default n
---help---
If this option is enabled, dump all contents when a crash occurs.
endif # DRIVERS_NOTERAM
config DRIVERS_NOTE_STRIP_FORMAT
bool "Strip sched_note_printf format string"
---help---
Strip sched_note_printf format string.
config DRIVERS_NOTELOG
bool "Note syslog driver"
---help---
The note driver output to syslog.
config DRIVERS_NOTESNAP
bool "Last scheduling information"
default n
---help---
Record the last scheduling information.
if DRIVERS_NOTESNAP
config DRIVERS_NOTESNAP_NBUFFERS
int "Number of last scheduling information buffers"
default 128
---help---
Number of last scheduling information buffers.
endif
endif # DRIVERS_NOTE