-#ifdef KERNEL
-#define SIG_CATCH (void (*)())2
-#define SIG_HOLD (void (*)())3
-
-#define sigcantmask (sigmask(SIGKILL)|sigmask(SIGSTOP))
-/*
- * get signal action for process and signal; currently only for current process
- */
-#define SIGACTION(p, sig) (u.u_signal[(sig)])
-
-/*
- * Determine signal that should be delivered to process p, the current process,
- * 0 if none. If there is a pending stop signal with default action,
- * the process stops in issig().
- */
-#define CURSIG(p) \
- (((p)->p_sig == 0 || \
- ((p)->p_flag&STRC) == 0 && ((p)->p_sig &~ (p)->p_sigmask) == 0) ? \
- 0 : issig())
-
-/*
- * Clear a pending signal from a process.
- */
-#define CLRSIG(p, sig) { (p)->p_sig &= ~sigmask(sig); }
-
-#endif /* KERNEL */
-
-#if __STDC__ || c_plusplus
-int kill(pid_t, int);
-int sigaction(int, const struct sigaction *, struct sigaction *);
-int sigprocmask(int, const sigset_t *, sigset_t *);
-int sigpending(sigset_t *);
-int sigsuspend(const sigset_t *);
-#else
-int kill();
-int sigaction();
-int sigprocmask();
-int sigpending();
-int sigsuspend();
-#endif
-#endif /* NSIG */
+#ifndef KERNEL
+#include <sys/types.h>
+
+__BEGIN_DECLS
+void (*signal __P((int, void (*) __P((int))))) __P((int));
+int raise __P((int));
+#ifndef _ANSI_SOURCE
+int kill __P((pid_t, int));
+int sigaction __P((int, const struct sigaction *, struct sigaction *));
+int sigpending __P((sigset_t *));
+int sigprocmask __P((int, const sigset_t *, sigset_t *));
+int sigsuspend __P((const sigset_t *));
+#endif /* !_ANSI_SOURCE */
+#if !defined(_ANSI_SOURCE) && !defined(_POSIX_SOURCE)
+int killpg __P((pid_t, int));
+void psignal __P((unsigned, const char *));
+int sigblock __P((int));
+int siginterrupt __P((int, int));
+int sigpause __P((int));
+int sigreturn __P((struct sigcontext *));
+int sigsetmask __P((int));
+int sigstack __P((const struct sigstack *, struct sigstack *));
+int sigvec __P((int, struct sigvec *, struct sigvec *));
+#endif /* !_ANSI_SOURCE && !_POSIX_SOURCE */
+__END_DECLS
+
+#endif /* !KERNEL */
+#endif /* !_SIGNAL_H_ */