summaryrefslogtreecommitdiffstats
path: root/src/svm
diff options
context:
space:
mode:
authorTom Jones <thj@freebsd.org>2024-01-26 17:44:33 +0000
committerDamjan Marion <dmarion@0xa5.net>2024-02-13 16:33:06 +0000
commit775002358fae5767170733f1d781c49a991a482a (patch)
tree60489b1e67f8bd42e4e5aa068303584e374ed331 /src/svm
parent7ec62fb0cd8c4d794d6f22ccc2fe8dae672a63a6 (diff)
svm: Add FreeBSD specific signal handling path
FreeBSD's siginfo_t doesn't have the ptr value used on linux to encode a token. Fow now recover the code from siginfo_t and leave the opaque value as 0. Type: improvement Change-Id: Ic6ef96f018b326b99d68534a4488cfc49fdf16e1 Signed-off-by: Tom Jones <thj@freebsd.org>
Diffstat (limited to 'src/svm')
-rw-r--r--src/svm/svmdbtool.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/svm/svmdbtool.c b/src/svm/svmdbtool.c
index feb7eed07ef..b60b86db29d 100644
--- a/src/svm/svmdbtool.c
+++ b/src/svm/svmdbtool.c
@@ -248,11 +248,16 @@ static void
sigaction_handler (int signum, siginfo_t * i, void *notused)
{
u32 action, opaque;
+#ifdef __linux__
action = (u32) (uword) i->si_ptr;
action >>= 28;
opaque = (u32) (uword) i->si_ptr;
opaque &= ~(0xF0000000);
+#elif __FreeBSD__
+ action = i->si_code;
+ opaque = 0;
+#endif /* __linux__ */
clib_warning ("signal %d, action %d, opaque %x", signum, action, opaque);
}