projects
/
unix-history
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
tags
|
clone url
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
This commit was generated by cvs2svn to track changes on a CVS vendor
[unix-history]
/
sys
/
kern
/
kern_sig.c
diff --git
a/sys/kern/kern_sig.c
b/sys/kern/kern_sig.c
index
72cf35f
..
1e40495
100644
(file)
--- a/
sys/kern/kern_sig.c
+++ b/
sys/kern/kern_sig.c
@@
-30,7
+30,8
@@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * @(#)kern_sig.c 7.35 (Berkeley) 6/28/91
+ * from: @(#)kern_sig.c 7.35 (Berkeley) 6/28/91
+ * $Id: kern_sig.c,v 1.8 1993/11/27 17:07:00 davidg Exp $
*/
#define SIGPROP /* include signal properties table */
*/
#define SIGPROP /* include signal properties table */
@@
-58,6
+59,11
@@
#include "kinfo_proc.h"
#include "user.h" /* for coredump */
#include "kinfo_proc.h"
#include "user.h" /* for coredump */
+static void setsigvec(struct proc *, int, struct sigaction *);
+static void stop(struct proc *);
+static void sigexit(struct proc *, int);
+static int killpg1(struct proc *, int, int, int);
+
/*
* Can process p, with pcred pc, send the signal signo to process q?
*/
/*
* Can process p, with pcred pc, send the signal signo to process q?
*/
@@
-76,6
+82,7
@@
struct sigaction_args {
};
/* ARGSUSED */
};
/* ARGSUSED */
+int
sigaction(p, uap, retval)
struct proc *p;
register struct sigaction_args *uap;
sigaction(p, uap, retval)
struct proc *p;
register struct sigaction_args *uap;
@@
-115,6
+122,7
@@
sigaction(p, uap, retval)
return (0);
}
return (0);
}
+void
setsigvec(p, sig, sa)
register struct proc *p;
int sig;
setsigvec(p, sig, sa)
register struct proc *p;
int sig;
@@
-228,6
+236,7
@@
struct sigprocmask_args {
sigset_t mask;
};
sigset_t mask;
};
+int
sigprocmask(p, uap, retval)
register struct proc *p;
struct sigprocmask_args *uap;
sigprocmask(p, uap, retval)
register struct proc *p;
struct sigprocmask_args *uap;
@@
-260,6
+269,7
@@
sigprocmask(p, uap, retval)
}
/* ARGSUSED */
}
/* ARGSUSED */
+int
sigpending(p, uap, retval)
struct proc *p;
void *uap;
sigpending(p, uap, retval)
struct proc *p;
void *uap;
@@
-282,6
+292,7
@@
struct osigvec_args {
};
/* ARGSUSED */
};
/* ARGSUSED */
+int
osigvec(p, uap, retval)
struct proc *p;
register struct osigvec_args *uap;
osigvec(p, uap, retval)
struct proc *p;
register struct osigvec_args *uap;
@@
-326,6
+337,7
@@
struct osigblock_args {
int mask;
};
int mask;
};
+int
osigblock(p, uap, retval)
register struct proc *p;
struct osigblock_args *uap;
osigblock(p, uap, retval)
register struct proc *p;
struct osigblock_args *uap;
@@
-343,6
+355,7
@@
struct osigsetmask_args {
int mask;
};
int mask;
};
+int
osigsetmask(p, uap, retval)
struct proc *p;
struct osigsetmask_args *uap;
osigsetmask(p, uap, retval)
struct proc *p;
struct osigsetmask_args *uap;
@@
-368,6
+381,7
@@
struct sigsuspend_args {
};
/* ARGSUSED */
};
/* ARGSUSED */
+int
sigsuspend(p, uap, retval)
register struct proc *p;
struct sigsuspend_args *uap;
sigsuspend(p, uap, retval)
register struct proc *p;
struct sigsuspend_args *uap;
@@
-396,6
+410,7
@@
struct sigstack_args {
};
/* ARGSUSED */
};
/* ARGSUSED */
+int
sigstack(p, uap, retval)
struct proc *p;
register struct sigstack_args *uap;
sigstack(p, uap, retval)
struct proc *p;
register struct sigstack_args *uap;
@@
-419,6
+434,7
@@
struct kill_args {
};
/* ARGSUSED */
};
/* ARGSUSED */
+int
kill(cp, uap, retval)
register struct proc *cp;
register struct kill_args *uap;
kill(cp, uap, retval)
register struct proc *cp;
register struct kill_args *uap;
@@
-459,6
+475,7
@@
struct okillpg_args {
};
/* ARGSUSED */
};
/* ARGSUSED */
+int
okillpg(p, uap, retval)
struct proc *p;
register struct okillpg_args *uap;
okillpg(p, uap, retval)
struct proc *p;
register struct okillpg_args *uap;
@@
-475,6
+492,7
@@
okillpg(p, uap, retval)
* Common code for kill process group/broadcast kill.
* cp is calling process.
*/
* Common code for kill process group/broadcast kill.
* cp is calling process.
*/
+static int
killpg1(cp, signo, pgid, all)
register struct proc *cp;
int signo, pgid, all;
killpg1(cp, signo, pgid, all)
register struct proc *cp;
int signo, pgid, all;
@@
-604,6
+622,10
@@
psignal(p, sig)
register sig_t action;
int mask;
register sig_t action;
int mask;
+ /* Ignore signals to system (internal) daemons */
+ if (p->p_flag & SSYS)
+ return;
+
if ((unsigned)sig >= NSIG || sig == 0)
panic("psignal sig");
mask = sigmask(sig);
if ((unsigned)sig >= NSIG || sig == 0)
panic("psignal sig");
mask = sigmask(sig);
@@
-794,6
+816,7
@@
out:
* while (sig = CURSIG(curproc))
* psig(sig);
*/
* while (sig = CURSIG(curproc))
* psig(sig);
*/
+int
issig(p)
register struct proc *p;
{
issig(p)
register struct proc *p;
{
@@
-931,6
+954,7
@@
issig(p)
* Signals are handled elsewhere.
* The process must not be on the run queue.
*/
* Signals are handled elsewhere.
* The process must not be on the run queue.
*/
+static void
stop(p)
register struct proc *p;
{
stop(p)
register struct proc *p;
{
@@
-1011,6
+1035,7
@@
psig(sig)
* If dumping core, save the signal number for the debugger.
* Calls exit and does not return.
*/
* If dumping core, save the signal number for the debugger.
* Calls exit and does not return.
*/
+static void
sigexit(p, sig)
register struct proc *p;
int sig;
sigexit(p, sig)
register struct proc *p;
int sig;
@@
-1036,6
+1061,7
@@
sigexit(p, sig)
* or was not produced from the same program,
* the link count to the corefile is > 1.
*/
* or was not produced from the same program,
* the link count to the corefile is > 1.
*/
+int
coredump(p)
register struct proc *p;
{
coredump(p)
register struct proc *p;
{
@@
-1060,12
+1086,12
@@
coredump(p)
sprintf(name, "%s.core", p->p_comm);
nd.ni_dirp = name;
nd.ni_segflg = UIO_SYSSPACE;
sprintf(name, "%s.core", p->p_comm);
nd.ni_dirp = name;
nd.ni_segflg = UIO_SYSSPACE;
- if ((error = vn_open(&nd, p, FWRITE, 06
44
)) == 0)
+ if ((error = vn_open(&nd, p, FWRITE, 06
00
)) == 0)
exists = 1;
else
exists = 0;
if (error == ENOENT)
exists = 1;
else
exists = 0;
if (error == ENOENT)
- error = vn_open(&nd, p, O_CREAT | FWRITE, 06
44
);
+ error = vn_open(&nd, p, O_CREAT | FWRITE, 06
00
);
if (error)
return (error);
vp = nd.ni_vp;
if (error)
return (error);
vp = nd.ni_vp;
@@
-1130,6
+1156,7
@@
out:
* Flag error in case process won't see signal immediately (blocked or ignored).
*/
/* ARGSUSED */
* Flag error in case process won't see signal immediately (blocked or ignored).
*/
/* ARGSUSED */
+int
nosys(p, args, retval)
struct proc *p;
void *args;
nosys(p, args, retval)
struct proc *p;
void *args;