svm: Add FreeBSD specific signal handling path 74/40274/2
authorTom Jones <thj@freebsd.org>
Fri, 26 Jan 2024 17:44:33 +0000 (17:44 +0000)
committerDamjan Marion <dmarion@0xa5.net>
Tue, 13 Feb 2024 16:33:06 +0000 (16:33 +0000)
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>
src/svm/svmdbtool.c

index feb7eed..b60b86d 100644 (file)
@@ -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);
 }