diff options
author | Jesper Juhl <juhl-lkml@dif.dk> | 2005-05-01 11:59:13 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@ppc970.osdl.org> | 2005-05-01 11:59:13 -0400 |
commit | e5bdd883a189243541e7a132385580703b049102 (patch) | |
tree | 6e56919829118d5aa6aa89991edaba764825fab2 | |
parent | 1c72d46d98e4eb16f1a1b38eba94cc3aa8022cfa (diff) |
[PATCH] new valid_signal() function
This patch adds a new function valid_signal() that tests if its argument is
a valid signal number.
The reasons for adding this new function are:
- some code currently testing _NSIG directly has off-by-one errors.
Using this function instead avoids such errors.
- some code currently tests unsigned signal numbers for <0 which is
pointless and generates warnings when building with gcc -W. Using this
function instead avoids such warnings.
I considered various places to add this function but eventually settled on
include/linux/signal.h as the most logical place for it. If there's some
reason this is a bad choice then please let me know (hints as to a better
location are then welcome of course).
Signed-off-by: Jesper Juhl <juhl-lkml@dif.dk>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-rw-r--r-- | include/linux/signal.h | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/include/linux/signal.h b/include/linux/signal.h index 78bfb266e4f7..0a98f5ec5cae 100644 --- a/include/linux/signal.h +++ b/include/linux/signal.h | |||
@@ -220,6 +220,12 @@ static inline void init_sigpending(struct sigpending *sig) | |||
220 | INIT_LIST_HEAD(&sig->list); | 220 | INIT_LIST_HEAD(&sig->list); |
221 | } | 221 | } |
222 | 222 | ||
223 | /* Test if 'sig' is valid signal. Use this instead of testing _NSIG directly */ | ||
224 | static inline int valid_signal(unsigned long sig) | ||
225 | { | ||
226 | return sig <= _NSIG ? 1 : 0; | ||
227 | } | ||
228 | |||
223 | extern int group_send_sig_info(int sig, struct siginfo *info, struct task_struct *p); | 229 | extern int group_send_sig_info(int sig, struct siginfo *info, struct task_struct *p); |
224 | extern int __group_send_sig_info(int, struct siginfo *, struct task_struct *); | 230 | extern int __group_send_sig_info(int, struct siginfo *, struct task_struct *); |
225 | extern long do_sigpending(void __user *, unsigned long); | 231 | extern long do_sigpending(void __user *, unsigned long); |