Kconfig 3.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. #
  2. # For a description of the syntax of this configuration file,
  3. # see the file kconfig-language.txt in the NuttX tools repository.
  4. #
  5. menuconfig DRIVER_NOTE
  6. bool "Note Driver Support"
  7. depends on SCHED_INSTRUMENTATION
  8. default n
  9. if DRIVER_NOTE
  10. choice
  11. prompt "Note driver selection"
  12. default DRIVER_NOTERAM
  13. config DRIVER_NOTERAM
  14. bool "Note RAM driver"
  15. depends on !SCHED_INSTRUMENTATION_CSECTION && (!SCHED_INSTRUMENTATION_SPINLOCK || !SMP)
  16. ---help---
  17. If this option is selected, then in-memory buffering logic is
  18. enabled to capture scheduler instrumentation data. This has
  19. the advantage that (1) the platform logic does not have to provide
  20. the sched_note_* interfaces described for the previous settings.
  21. Instead, the buffering logic catches all of these. It encodes
  22. timestamps the scheduler note and adds the note to an in-memory,
  23. circular buffer. And (2) buffering the scheduler instrumentation
  24. data (versus performing some output operation) minimizes the impact
  25. of the instrumentation on the behavior of the system. If the in-memory
  26. buffer becomes full, then older notes are overwritten by newer notes.
  27. A character driver is provided which can be used by an application
  28. to read data from the in-memory, scheduler instrumentation "note"
  29. buffer.
  30. NOTE: This option is not available if critical sections are being
  31. monitor (nor if spinlocks are being monitored in SMP configuration)
  32. because there would be a logical error in the design in those cases.
  33. That error is that these interfaces call enter_ and leave_critical_section
  34. (and which us spinlocks in SMP mode). That means that each call to
  35. sched_note_get() causes several additional entries to be added from
  36. the note buffer in order to remove one entry.
  37. config DRIVER_NOTEARCH
  38. bool "Note Arch driver"
  39. ---help---
  40. The note driver is provided by arch specific code.
  41. config DRIVER_NOTELOG
  42. bool "Note syslog driver"
  43. select SCHED_INSTRUMENTATION_EXTERNAL
  44. ---help---
  45. The note driver output to syslog.
  46. endchoice
  47. config DRIVER_NOTERAM_BUFSIZE
  48. int "Note RAM buffer size"
  49. depends on DRIVER_NOTERAM
  50. default 2048
  51. ---help---
  52. The size of the in-memory, circular instrumentation buffer (in bytes).
  53. config DRIVER_NOTERAM_TASKNAME_BUFSIZE
  54. int "Note RAM task name buffer size"
  55. depends on DRIVER_NOTERAM
  56. default 256 if TASK_NAME_SIZE > 0
  57. default 0 if TASK_NAME_SIZE = 0
  58. ---help---
  59. The size of the in-memory task name buffer (in bytes).
  60. The buffer is used to hold the name of the task during instrumentation.
  61. Trace dump can find and show a task name corresponding to given pid in
  62. the instrumentation data by using this buffer.
  63. If 0 is specified, this feature is disabled and trace dump shows only
  64. the name of the newly created task.
  65. config DRIVER_NOTERAM_DEFAULT_NOOVERWRITE
  66. bool "Disable overwrite by default"
  67. depends on DRIVER_NOTERAM
  68. default n
  69. ---help---
  70. Disables overwriting old notes in the circular buffer when the buffer
  71. is full by default. This is useful to keep instrumentation data of the
  72. beginning of a system boot.
  73. config DRIVER_NOTECTL
  74. bool "Scheduler instrumentation filter control driver"
  75. default n
  76. depends on SCHED_INSTRUMENTATION_FILTER
  77. ---help---
  78. If this option is selected, the instrumentation filter control device
  79. /dev/notectl is provided.
  80. endif