From 6e4432bc6f75efe8221991e3eeee9647d8699fad Mon Sep 17 00:00:00 2001 From: Ingo Weinhold Date: Sun, 9 Mar 2008 17:45:52 +0000 Subject: [PATCH] Add a tracing entry when executing a signal handler. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24333 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/system/kernel/signal.cpp | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/src/system/kernel/signal.cpp b/src/system/kernel/signal.cpp index db46be4d35..ff0582f73c 100644 --- a/src/system/kernel/signal.cpp +++ b/src/system/kernel/signal.cpp @@ -83,6 +83,28 @@ class HandleSignals : public AbstractTraceEntry { }; +class ExecuteSignalHandler : public AbstractTraceEntry { + public: + ExecuteSignalHandler(int signal, struct sigaction* handler) + : + fSignal(signal), + fHandler((void*)handler->sa_handler) + { + Initialized(); + } + + virtual void AddDump(TraceOutput& out) + { + out.Print("signal exec handler: signal: %d, handler: %p", + fSignal, fHandler); + } + + private: + int fSignal; + void* fHandler; +}; + + class SendSignal : public AbstractTraceEntry { public: SendSignal(pid_t target, uint32 signal, uint32 flags) @@ -388,6 +410,8 @@ handle_signals(struct thread *thread) if (!restart || (handler->sa_flags & SA_RESTART) == 0) atomic_and(&thread->flags, ~THREAD_FLAGS_RESTART_SYSCALL); + T(ExecuteSignalHandler(signal, handler)); + TRACE(("### Setting up custom signal handler frame...\n")); arch_setup_signal_frame(thread, handler, signal, atomic_get(&thread->sig_block_mask));