hostapd: Add -T Linux tracing option

Just like wpa_supplicant, give hostapd the -T option to
send all debug messages into the Linux tracing buffer.
Enable this option for hwsim test builds by default.

Signed-hostap: Johannes Berg <johannes.berg@intel.com>
This commit is contained in:
Johannes Berg 2013-10-30 19:29:58 +01:00 committed by Jouni Malinen
parent f62ec3696d
commit 0648c3b8f5
5 changed files with 35 additions and 2 deletions

View file

@ -828,6 +828,10 @@ ifdef CONFIG_NO_STDOUT_DEBUG
CFLAGS += -DCONFIG_NO_STDOUT_DEBUG CFLAGS += -DCONFIG_NO_STDOUT_DEBUG
endif endif
ifdef CONFIG_DEBUG_LINUX_TRACING
CFLAGS += -DCONFIG_DEBUG_LINUX_TRACING
endif
ifdef CONFIG_DEBUG_FILE ifdef CONFIG_DEBUG_FILE
CFLAGS += -DCONFIG_DEBUG_FILE CFLAGS += -DCONFIG_DEBUG_FILE
endif endif

View file

@ -157,6 +157,12 @@ CONFIG_IPV6=y
# Disabled by default. # Disabled by default.
#CONFIG_DEBUG_FILE=y #CONFIG_DEBUG_FILE=y
# Add support for sending all debug messages (regardless of debug verbosity)
# to the Linux kernel tracing facility. This helps debug the entire stack by
# making it easy to record everything happening from the driver up into the
# same file, e.g., using trace-cmd.
#CONFIG_DEBUG_LINUX_TRACING=y
# Remove support for RADIUS accounting # Remove support for RADIUS accounting
#CONFIG_NO_ACCOUNTING=y #CONFIG_NO_ACCOUNTING=y

View file

@ -629,6 +629,10 @@ static void usage(void)
#ifdef CONFIG_DEBUG_FILE #ifdef CONFIG_DEBUG_FILE
" -f log output to debug file instead of stdout\n" " -f log output to debug file instead of stdout\n"
#endif /* CONFIG_DEBUG_FILE */ #endif /* CONFIG_DEBUG_FILE */
#ifdef CONFIG_DEBUG_LINUX_TRACING
" -T = record to Linux tracing in addition to logging\n"
" (records all messages regardless of debug verbosity)\n"
#endif /* CONFIG_DEBUG_LINUX_TRACING */
" -t include timestamps in some debug messages\n" " -t include timestamps in some debug messages\n"
" -v show hostapd version\n"); " -v show hostapd version\n");
@ -697,6 +701,9 @@ int main(int argc, char *argv[])
const char *entropy_file = NULL; const char *entropy_file = NULL;
char **bss_config = NULL, **tmp_bss; char **bss_config = NULL, **tmp_bss;
size_t num_bss_configs = 0; size_t num_bss_configs = 0;
#ifdef CONFIG_DEBUG_LINUX_TRACING
int enable_trace_dbg = 0;
#endif /* CONFIG_DEBUG_LINUX_TRACING */
if (os_program_init()) if (os_program_init())
return -1; return -1;
@ -713,7 +720,7 @@ int main(int argc, char *argv[])
interfaces.global_ctrl_sock = -1; interfaces.global_ctrl_sock = -1;
for (;;) { for (;;) {
c = getopt(argc, argv, "b:Bde:f:hKP:tvg:G:"); c = getopt(argc, argv, "b:Bde:f:hKP:Ttvg:G:");
if (c < 0) if (c < 0)
break; break;
switch (c) { switch (c) {
@ -744,6 +751,11 @@ int main(int argc, char *argv[])
case 't': case 't':
wpa_debug_timestamp++; wpa_debug_timestamp++;
break; break;
#ifdef CONFIG_DEBUG_LINUX_TRACING
case 'T':
enable_trace_dbg = 1;
break;
#endif /* CONFIG_DEBUG_LINUX_TRACING */
case 'v': case 'v':
show_version(); show_version();
exit(1); exit(1);
@ -779,6 +791,15 @@ int main(int argc, char *argv[])
if (log_file) if (log_file)
wpa_debug_open_file(log_file); wpa_debug_open_file(log_file);
#ifdef CONFIG_DEBUG_LINUX_TRACING
if (enable_trace_dbg) {
int tret = wpa_debug_open_linux_tracing();
if (tret) {
wpa_printf(MSG_ERROR, "Failed to enable trace logging");
return -1;
}
}
#endif /* CONFIG_DEBUG_LINUX_TRACING */
interfaces.count = argc - optind; interfaces.count = argc - optind;
if (interfaces.count || num_bss_configs) { if (interfaces.count || num_bss_configs) {
@ -867,6 +888,7 @@ int main(int argc, char *argv[])
if (log_file) if (log_file)
wpa_debug_close_file(); wpa_debug_close_file();
wpa_debug_close_linux_tracing();
os_free(bss_config); os_free(bss_config);

View file

@ -57,6 +57,7 @@ CONFIG_WPA_TRACE_BFD=y
CONFIG_P2P_MANAGER=y CONFIG_P2P_MANAGER=y
CONFIG_DEBUG_FILE=y CONFIG_DEBUG_FILE=y
CONFIG_DEBUG_LINUX_TRACING=y
CONFIG_WPA_CLI_EDIT=y CONFIG_WPA_CLI_EDIT=y
CONFIG_ACS=y CONFIG_ACS=y
CONFIG_NO_RANDOM_POOL=y CONFIG_NO_RANDOM_POOL=y

View file

@ -64,7 +64,7 @@ for i in 0 1 2; do
sudo $(printf -- "$VALGRIND_WPAS" $i) $WPAS -g /tmp/wpas-wlan$i -G$GROUP -Dnl80211 -iwlan$i -c $DIR/p2p$i.conf \ sudo $(printf -- "$VALGRIND_WPAS" $i) $WPAS -g /tmp/wpas-wlan$i -G$GROUP -Dnl80211 -iwlan$i -c $DIR/p2p$i.conf \
$(printf -- "$CONCURRENT_ARGS" $i) -ddKt$TRACE > $LOGDIR/$DATE-log$i & $(printf -- "$CONCURRENT_ARGS" $i) -ddKt$TRACE > $LOGDIR/$DATE-log$i &
done done
sudo $VALGRIND_HAPD $HAPD -ddKt -g /var/run/hostapd-global -G $GROUP -ddKt > $LOGDIR/$DATE-hostapd & sudo $VALGRIND_HAPD $HAPD -ddKt$TRACE -g /var/run/hostapd-global -G $GROUP -ddKt > $LOGDIR/$DATE-hostapd &
sleep 1 sleep 1
sudo chown $USER $LOGDIR/$DATE-hwsim0.dump sudo chown $USER $LOGDIR/$DATE-hwsim0.dump