tracing: move tracing under subsys/

Tracing subsystem is growing and although related to debugging, it does
deserve to belong into its own subsystem.

Signed-off-by: Anas Nashif <anas.nashif@intel.com>
This commit is contained in:
Anas Nashif 2020-02-06 09:13:51 -05:00
parent 707858eed1
commit 41abcc57c1
32 changed files with 185 additions and 177 deletions

View file

@ -19,5 +19,6 @@ add_subdirectory(fb)
add_subdirectory(power)
add_subdirectory(stats)
add_subdirectory(testsuite)
add_subdirectory(tracing)
add_subdirectory_if_kconfig(jwt)
add_subdirectory(canbus)

View file

@ -35,6 +35,8 @@ source "subsys/settings/Kconfig"
source "subsys/testsuite/Kconfig"
source "subsys/tracing/Kconfig"
source "subsys/fb/Kconfig"
source "subsys/jwt/Kconfig"

View file

@ -9,5 +9,3 @@ zephyr_sources_ifdef(
CONFIG_ASAN
asan_hacks.c
)
add_subdirectory(tracing)

View file

@ -39,133 +39,6 @@ config DEBUG
only disables optimization, more debugging variants can be selected
from here to allow more debugging.
config TRACING
bool "Enabling Tracing"
help
Enable system tracing. This requires a backend such as SEGGER
Systemview to be enabled as well.
if TRACING
choice
prompt "Tracing Method"
default TRACING_ASYNC
config TRACING_SYNC
bool "Synchronous Tracing"
select RING_BUFFER
help
Enable synchronous tracing. This requires the backend to be
very low-latency.
config TRACING_ASYNC
bool "Asynchronous Tracing"
select RING_BUFFER
help
Enable asynchronous tracing. This will buffer all the tracing
packets to the ring buffer first, tracing thread will try to
output as much data in ring buffer as possible when tracing
thread get scheduled.
endchoice
config TRACING_THREAD_STACK_SIZE
int "Stack size of tracing thread"
default 1024
depends on TRACING_ASYNC
help
Stack size of tracing thread.
config TRACING_THREAD_WAIT_THRESHOLD
int "Tracing thread waiting threshold"
default 100
depends on TRACING_ASYNC
help
Tracing thread waiting period given in milliseconds after
every first packet put to tracing buffer.
config TRACING_BUFFER_SIZE
int "Size of tracing buffer"
default 2048 if TRACING_ASYNC
default TRACING_PACKET_MAX_SIZE if TRACING_SYNC
range 32 65536
help
Size of tracing buffer. If TRACING_ASYNC is enabled, tracing buffer
is used as ring_buffer to buffer data packet and string packet. If
TRACING_SYNC is enabled, it's used to hold the formated data.
config TRACING_PACKET_MAX_SIZE
int "Max size of one tracing packet"
default 32
help
Max size of one tracing packet.
choice
prompt "Tracing Backend"
default TRACING_BACKEND_UART
config TRACING_BACKEND_UART
bool "Enable UART backend"
depends on UART_CONSOLE
depends on TRACING_ASYNC
help
When enabled backend is using UART to output tracing data.
config TRACING_BACKEND_USB
bool "Enable USB backend"
depends on TRACING_ASYNC
help
When enabled backend is using USB to output tracing data.
config TRACING_BACKEND_POSIX
bool "Enable POSIX backend"
depends on TRACING_SYNC
depends on ARCH_POSIX
help
When enabled backend is using posix API to output tracing
data to file system.
endchoice
config TRACING_BACKEND_UART_NAME
string "Device Name of UART Device for UART backend"
default "$(dt_chosen_label,$(DT_CHOSEN_Z_CONSOLE))" if HAS_DTS
default "UART_0"
depends on TRACING_BACKEND_UART
help
This option specifies the name of UART device to be used for
tracing backend.
config TRACING_USB_MPS
int "USB backend max packet size"
default 64
depends on TRACING_BACKEND_USB
help
USB tracing backend max packet size(endpoint MPS).
config TRACING_HANDLE_HOST_CMD
bool "Enable host cmd handle"
select UART_INTERRUPT_DRIVEN if TRACING_BACKEND_UART
help
When enabled tracing will handle cmd from host to dynamically
enable and disable tracing to have host capture tracing stream
data conveniently.
config TRACING_CMD_BUFFER_SIZE
int "Size of tracing cmd buffer"
default 32
range 32 128
help
Size of tracing command buffer.
config TRACING_ISR
bool "Enabling Tracing ISR"
help
Enable tracing ISR. This requires the backend to be
very low-latency.
endif
config ASAN
bool "Build with address sanitizer"
depends on ARCH_POSIX
@ -409,53 +282,5 @@ config OPENOCD_SUPPORT
OpenOCD to determine the state of running threads. (This option
selects CONFIG_THREAD_MONITOR, so all of its caveats are implied.)
config TRACING_CPU_STATS
bool "Enable CPU usage tracing"
select THREAD_MONITOR
select THREAD_STACK_INFO
select TRACING
help
Module provides information about percent of CPU usage based on
tracing hooks for threads switching in and out, interrupts enters
and exits (only distinguishes between idle thread, non idle thread
and scheduler). Use provided API or enable automatic logging to
get values.
config TRACING_CPU_STATS_LOG
bool "Enable current CPU usage logging"
depends on TRACING_CPU_STATS
help
Periodically displays information about CPU usage.
config TRACING_CPU_STATS_INTERVAL
int "Logging interval for CPU measurements [ms]"
default 2000
depends on TRACING_CPU_STATS_LOG
help
Time period of displaying information about CPU usage.
config TRACING_CTF
bool "Tracing via Common Trace Format support"
select THREAD_MONITOR
select TRACING
help
Enable tracing to a Common Trace Format stream.
config TRACING_CTF_TIMESTAMP
bool "Enable CTF internal timestamp"
default y
help
Timestamp prefix will be added to the beginning of CTF
event internally.
config TRACING_TEST
bool "Tracing for test usage"
depends on TRACING
help
Enable tracing for testing kinds of format purpose. It must
implement the tracing hooks defined in tracing_test.h
source "subsys/debug/Kconfig.segger"
endmenu

182
subsys/tracing/Kconfig Normal file
View file

@ -0,0 +1,182 @@
# Debug configuration options
# Copyright (c) 2015 Wind River Systems, Inc.
# SPDX-License-Identifier: Apache-2.0
DT_CHOSEN_Z_CONSOLE := zephyr,console
config TRACING
bool "Enabling Tracing"
help
Enable system tracing. This requires a backend such as SEGGER
Systemview to be enabled as well.
if TRACING
choice
prompt "Tracing Method"
default TRACING_ASYNC
config TRACING_SYNC
bool "Synchronous Tracing"
select RING_BUFFER
help
Enable synchronous tracing. This requires the backend to be
very low-latency.
config TRACING_ASYNC
bool "Asynchronous Tracing"
select RING_BUFFER
help
Enable asynchronous tracing. This will buffer all the tracing
packets to the ring buffer first, tracing thread will try to
output as much data in ring buffer as possible when tracing
thread get scheduled.
endchoice
config TRACING_THREAD_STACK_SIZE
int "Stack size of tracing thread"
default 1024
depends on TRACING_ASYNC
help
Stack size of tracing thread.
config TRACING_THREAD_WAIT_THRESHOLD
int "Tracing thread waiting threshold"
default 100
depends on TRACING_ASYNC
help
Tracing thread waiting period given in milliseconds after
every first packet put to tracing buffer.
config TRACING_BUFFER_SIZE
int "Size of tracing buffer"
default 2048 if TRACING_ASYNC
default TRACING_PACKET_MAX_SIZE if TRACING_SYNC
range 32 65536
help
Size of tracing buffer. If TRACING_ASYNC is enabled, tracing buffer
is used as ring_buffer to buffer data packet and string packet. If
TRACING_SYNC is enabled, it's used to hold the formated data.
config TRACING_PACKET_MAX_SIZE
int "Max size of one tracing packet"
default 32
help
Max size of one tracing packet.
choice
prompt "Tracing Backend"
default TRACING_BACKEND_UART
config TRACING_BACKEND_UART
bool "Enable UART backend"
depends on UART_CONSOLE
depends on TRACING_ASYNC
help
When enabled backend is using UART to output tracing data.
config TRACING_BACKEND_USB
bool "Enable USB backend"
depends on TRACING_ASYNC
help
When enabled backend is using USB to output tracing data.
config TRACING_BACKEND_POSIX
bool "Enable POSIX backend"
depends on TRACING_SYNC
depends on ARCH_POSIX
help
When enabled backend is using posix API to output tracing
data to file system.
endchoice
config TRACING_BACKEND_UART_NAME
string "Device Name of UART Device for UART backend"
default "$(dt_chosen_label,$(DT_CHOSEN_Z_CONSOLE))" if HAS_DTS
default "UART_0"
depends on TRACING_BACKEND_UART
help
This option specifies the name of UART device to be used for
tracing backend.
config TRACING_USB_MPS
int "USB backend max packet size"
default 64
depends on TRACING_BACKEND_USB
help
USB tracing backend max packet size(endpoint MPS).
config TRACING_HANDLE_HOST_CMD
bool "Enable host cmd handle"
select UART_INTERRUPT_DRIVEN if TRACING_BACKEND_UART
help
When enabled tracing will handle cmd from host to dynamically
enable and disable tracing to have host capture tracing stream
data conveniently.
config TRACING_CMD_BUFFER_SIZE
int "Size of tracing cmd buffer"
default 32
range 32 128
help
Size of tracing command buffer.
config TRACING_ISR
bool "Enabling Tracing ISR"
help
Enable tracing ISR. This requires the backend to be
very low-latency.
endif
config TRACING_CPU_STATS
bool "Enable CPU usage tracing"
select THREAD_MONITOR
select THREAD_STACK_INFO
select TRACING
help
Module provides information about percent of CPU usage based on
tracing hooks for threads switching in and out, interrupts enters
and exits (only distinguishes between idle thread, non idle thread
and scheduler). Use provided API or enable automatic logging to
get values.
config TRACING_CPU_STATS_LOG
bool "Enable current CPU usage logging"
depends on TRACING_CPU_STATS
help
Periodically displays information about CPU usage.
config TRACING_CPU_STATS_INTERVAL
int "Logging interval for CPU measurements [ms]"
default 2000
depends on TRACING_CPU_STATS_LOG
help
Time period of displaying information about CPU usage.
config TRACING_CTF
bool "Tracing via Common Trace Format support"
select THREAD_MONITOR
select TRACING
help
Enable tracing to a Common Trace Format stream.
config TRACING_CTF_TIMESTAMP
bool "Enable CTF internal timestamp"
default y
help
Timestamp prefix will be added to the beginning of CTF
event internally.
config TRACING_TEST
bool "Tracing for test usage"
depends on TRACING
help
Enable tracing for testing kinds of format purpose. It must
implement the tracing hooks defined in tracing_test.h
source "subsys/tracing/Kconfig.segger"