All of lore.kernel.org
 help / color / mirror / Atom feed
* [Xenomai] [PATCH] Do not overwrite pre-existing SIGDEBUG handler in xeno_skin_bind
@ 2013-03-13 14:53 Jan Kiszka
  2013-03-13 20:53 ` Gilles Chanteperdrix
  0 siblings, 1 reply; 3+ messages in thread
From: Jan Kiszka @ 2013-03-13 14:53 UTC (permalink / raw)
  To: Xenomai

In case the application already set a SIGDEBUG handler, let that one
handle any potential SIGDEBUG_NOMLOCK events and keep our handler
(xeno_handle_mlock_alert) out of the loop. This helps in scenarios where
skin libraries are loaded belatedly via dlopen.

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
---

Anything that speaks against this? We ran into that issue with a large
application, and that can be one way to solve but should even make
sense in general.

 include/asm-generic/bits/bind.h |    5 +++++
 1 files changed, 5 insertions(+), 0 deletions(-)

diff --git a/include/asm-generic/bits/bind.h b/include/asm-generic/bits/bind.h
index 269be95..f39c853 100644
--- a/include/asm-generic/bits/bind.h
+++ b/include/asm-generic/bits/bind.h
@@ -23,6 +23,11 @@ xeno_bind_skin(unsigned skin_magic, const char *skin, const char *module)
 		exit(EXIT_FAILURE);
 	}
 
+	/* do not overwrite an already installed SIGDEBUG handler */
+	sigaction(SIGXCPU, NULL, &sa);
+	if (sa.sa_handler != SIG_DFL)
+		return muxid;
+
 	sa.sa_sigaction = xeno_handle_mlock_alert;
 	sigemptyset(&sa.sa_mask);
 	sa.sa_flags = SA_SIGINFO;
-- 
1.7.3.4


^ permalink raw reply related	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2013-03-14 12:09 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-03-13 14:53 [Xenomai] [PATCH] Do not overwrite pre-existing SIGDEBUG handler in xeno_skin_bind Jan Kiszka
2013-03-13 20:53 ` Gilles Chanteperdrix
2013-03-14 12:09   ` Jan Kiszka

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.