diff options
author | Masami Hiramatsu <mhiramat@redhat.com> | 2009-11-24 16:56:58 -0500 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2009-11-26 04:55:38 -0500 |
commit | ba005e1f417295d28cd1563ab82bc33af07fb16a (patch) | |
tree | d771659edc46c1bd5467578a6616657c8cf26db5 /kernel | |
parent | f9d4257e01d266e67420cc99d456b6d4c8464f54 (diff) |
tracepoint: Add signal loss events
Add signal_overflow_fail and signal_lose_info tracepoints
for signal-lost events.
Changes in v3:
- Add docbook style comments
Changes in v2:
- Use siginfo string macro
Suggested-by: Roland McGrath <roland@redhat.com>
Reviewed-by: Jason Baron <jbaron@redhat.com>
Signed-off-by: Masami Hiramatsu <mhiramat@redhat.com>
Acked-by: Roland McGrath <roland@redhat.com>
Cc: systemtap <systemtap@sources.redhat.com>
Cc: DLE <dle-develop@lists.sourceforge.net>
Cc: Oleg Nesterov <oleg@redhat.com>
LKML-Reference: <20091124215658.30449.9934.stgit@dhcp-100-2-132.bos.redhat.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'kernel')
-rw-r--r-- | kernel/signal.c | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/kernel/signal.c b/kernel/signal.c index 349d44937406..93e72e5feae6 100644 --- a/kernel/signal.c +++ b/kernel/signal.c | |||
@@ -897,12 +897,21 @@ static int __send_signal(int sig, struct siginfo *info, struct task_struct *t, | |||
897 | break; | 897 | break; |
898 | } | 898 | } |
899 | } else if (!is_si_special(info)) { | 899 | } else if (!is_si_special(info)) { |
900 | if (sig >= SIGRTMIN && info->si_code != SI_USER) | 900 | if (sig >= SIGRTMIN && info->si_code != SI_USER) { |
901 | /* | 901 | /* |
902 | * Queue overflow, abort. We may abort if the signal was rt | 902 | * Queue overflow, abort. We may abort if the |
903 | * and sent by user using something other than kill(). | 903 | * signal was rt and sent by user using something |
904 | */ | 904 | * other than kill(). |
905 | */ | ||
906 | trace_signal_overflow_fail(sig, group, info); | ||
905 | return -EAGAIN; | 907 | return -EAGAIN; |
908 | } else { | ||
909 | /* | ||
910 | * This is a silent loss of information. We still | ||
911 | * send the signal, but the *info bits are lost. | ||
912 | */ | ||
913 | trace_signal_lose_info(sig, group, info); | ||
914 | } | ||
906 | } | 915 | } |
907 | 916 | ||
908 | out_set: | 917 | out_set: |