From 3ff671b830698abbf39586c6677f3142dcfa72f1 Mon Sep 17 00:00:00 2001 From: Donatas Abraitis Date: Mon, 9 Oct 2023 12:03:50 +0300 Subject: [PATCH] lib: Suppress HOB/STARVATION warnings when running in vtysh Running ping/traceroute/etc. (any kind of commands that use execute_command() suffer with this kind of warnings. Signed-off-by: Donatas Abraitis --- lib/event.c | 4 ++++ vtysh/vtysh_main.c | 7 +++++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/lib/event.c b/lib/event.c index 122d3cd9a1fa..d3bc0205ae98 100644 --- a/lib/event.c +++ b/lib/event.c @@ -1946,6 +1946,7 @@ void event_getrusage(RUSAGE_T *r) void event_call(struct event *thread) { RUSAGE_T before, after; + bool suppress_warnings = EVENT_ARG(thread); /* if the thread being called is the CLI, it may change cputime_enabled * ("service cputime-stats" command), which can result in nonsensical @@ -2006,6 +2007,9 @@ void event_call(struct event *thread) atomic_fetch_or_explicit(&thread->hist->types, 1 << thread->add_type, memory_order_seq_cst); + if (suppress_warnings) + return; + if (cputime_enabled_here && cputime_enabled && cputime_threshold && cputime > cputime_threshold) { /* diff --git a/vtysh/vtysh_main.c b/vtysh/vtysh_main.c index 20254fcd537c..c57e8c7997fe 100644 --- a/vtysh/vtysh_main.c +++ b/vtysh/vtysh_main.c @@ -221,7 +221,9 @@ static struct event *vtysh_rl_read_thread; static void vtysh_rl_read(struct event *thread) { - event_add_read(master, vtysh_rl_read, NULL, STDIN_FILENO, + bool *suppress_warnings = EVENT_ARG(thread); + + event_add_read(master, vtysh_rl_read, suppress_warnings, STDIN_FILENO, &vtysh_rl_read_thread); rl_callback_read_char(); } @@ -230,11 +232,12 @@ static void vtysh_rl_read(struct event *thread) static void vtysh_rl_run(void) { struct event thread; + bool suppress_warnings = true; master = event_master_create(NULL); rl_callback_handler_install(vtysh_prompt(), vtysh_rl_callback); - event_add_read(master, vtysh_rl_read, NULL, STDIN_FILENO, + event_add_read(master, vtysh_rl_read, &suppress_warnings, STDIN_FILENO, &vtysh_rl_read_thread); while (!vtysh_loop_exited && event_fetch(master, &thread))