aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJieqiang Wang <jieqiang.wang@arm.com>2020-01-20 13:43:38 +0800
committerDamjan Marion <dmarion@me.com>2020-03-21 12:11:38 +0000
commit6f533d780ded2d0d2a4ba2224e4a9f7d181c7577 (patch)
treef6948a40489454367b95e06ad8edc556a5575cf3
parent2ed4204c91bf0c79639f39dc01601d58a0e536ee (diff)
vlib: leave SIGPROF signal with its default handler
When profiling VPP with MAP (a software profile suite on Arm CPUs, see details in https://www.arm.com/products/development-tools/server-and-hpc/forge/map) on Arm servers, VPP will receive SIGPROF signal because MAP uses SIGPROF signal to drive its sampler to do profiling on VPP. However, the default action of SIGPROF signal handler in VPP such as unix_signal_handler() is process termination. To profile VPP with MAP, the SIGPROF handler should be left as default, and MAP sampler will overwrite it with its own implementation. Type: feature Change-Id: Ie14e513d35ec27a66e95067689408bad8ed1ad6b Signed-off-by: Jieqiang Wang <jieqiang.wang@arm.com>
-rw-r--r--src/vat/main.c1
-rwxr-xr-xsrc/vlib/unix/main.c1
-rw-r--r--src/vpp/api/vpp_get_metrics.c1
3 files changed, 3 insertions, 0 deletions
diff --git a/src/vat/main.c b/src/vat/main.c
index 996fb1ed6a8..139594944d2 100644
--- a/src/vat/main.c
+++ b/src/vat/main.c
@@ -266,6 +266,7 @@ setup_signal_handlers (void)
case SIGSTOP:
case SIGUSR1:
case SIGUSR2:
+ case SIGPROF:
continue;
/* ignore SIGPIPE, SIGCHLD */
diff --git a/src/vlib/unix/main.c b/src/vlib/unix/main.c
index e40a462578e..90601d7bc41 100755
--- a/src/vlib/unix/main.c
+++ b/src/vlib/unix/main.c
@@ -213,6 +213,7 @@ setup_signal_handlers (unix_main_t * um)
case SIGSTOP:
case SIGUSR1:
case SIGUSR2:
+ case SIGPROF:
continue;
/* ignore SIGPIPE, SIGCHLD */
diff --git a/src/vpp/api/vpp_get_metrics.c b/src/vpp/api/vpp_get_metrics.c
index 9241e6d70c5..46536645dc9 100644
--- a/src/vpp/api/vpp_get_metrics.c
+++ b/src/vpp/api/vpp_get_metrics.c
@@ -81,6 +81,7 @@ setup_signal_handlers (void)
case SIGSTOP:
case SIGUSR1:
case SIGUSR2:
+ case SIGPROF:
continue;
/* ignore SIGPIPE, SIGCHLD */