Deleted Added
full compact
38c38
< __FBSDID("$FreeBSD: head/sys/kern/kern_sig.c 199136 2009-11-10 11:46:53Z kib $");
---
> __FBSDID("$FreeBSD: head/sys/kern/kern_sig.c 199355 2009-11-17 11:39:15Z kib $");
102c102,103
< static int killpg1(struct thread *td, int sig, int pgid, int all);
---
> static int killpg1(struct thread *td, int sig, int pgid, int all,
> ksiginfo_t *ksi);
384c385,386
< if ((si->ksi_flags & KSI_TRAP) != 0) {
---
> if ((si->ksi_flags & KSI_TRAP) != 0 ||
> (si->ksi_flags & KSI_SIGQ) == 0) {
1614,1616c1616
< killpg1(td, sig, pgid, all)
< register struct thread *td;
< int sig, pgid, all;
---
> killpg1(struct thread *td, int sig, int pgid, int all, ksiginfo_t *ksi)
1618c1618
< register struct proc *p;
---
> struct proc *p;
1637c1637
< psignal(p, sig);
---
> pksignal(p, sig, ksi);
1668c1668
< psignal(p, sig);
---
> pksignal(p, sig, ksi);
1685,1687c1685
< kill(td, uap)
< register struct thread *td;
< register struct kill_args *uap;
---
> kill(struct thread *td, struct kill_args *uap)
1689c1687,1688
< register struct proc *p;
---
> ksiginfo_t ksi;
> struct proc *p;
1696a1696,1701
> ksiginfo_init(&ksi);
> ksi.ksi_signo = uap->signum;
> ksi.ksi_code = SI_USER;
> ksi.ksi_pid = td->td_proc->p_pid;
> ksi.ksi_uid = td->td_ucred->cr_ruid;
>
1706c1711
< psignal(p, uap->signum);
---
> pksignal(p, uap->signum, &ksi);
1712c1717
< return (killpg1(td, uap->signum, 0, 1));
---
> return (killpg1(td, uap->signum, 0, 1, &ksi));
1714c1719
< return (killpg1(td, uap->signum, 0, 0));
---
> return (killpg1(td, uap->signum, 0, 0, &ksi));
1716c1721
< return (killpg1(td, uap->signum, -uap->pid, 0));
---
> return (killpg1(td, uap->signum, -uap->pid, 0, &ksi));
1730,1732c1735
< okillpg(td, uap)
< struct thread *td;
< register struct okillpg_args *uap;
---
> okillpg(struct thread *td, struct okillpg_args *uap)
1733a1737
> ksiginfo_t ksi;
1740c1744,1749
< return (killpg1(td, uap->signum, uap->pgid, 0));
---
> ksiginfo_init(&ksi);
> ksi.ksi_signo = uap->signum;
> ksi.ksi_code = SI_USER;
> ksi.ksi_pid = td->td_proc->p_pid;
> ksi.ksi_uid = td->td_ucred->cr_ruid;
> return (killpg1(td, uap->signum, uap->pgid, 0, &ksi));
1774a1784
> ksi.ksi_flags = KSI_SIGQ;
1790,1791c1800
< gsignal(pgid, sig)
< int pgid, sig;
---
> gsignal(int pgid, int sig, ksiginfo_t *ksi)
1800c1809
< pgsignal(pgrp, sig, 0);
---
> pgsignal(pgrp, sig, 0, ksi);
1811,1813c1820
< pgsignal(pgrp, sig, checkctty)
< struct pgrp *pgrp;
< int sig, checkctty;
---
> pgsignal(struct pgrp *pgrp, int sig, int checkctty, ksiginfo_t *ksi)
1815c1822
< register struct proc *p;
---
> struct proc *p;
1822c1829
< psignal(p, sig);
---
> pksignal(p, sig, ksi);
1943c1950,1955
< (void) tdsignal(p, NULL, sig, NULL);
---
> ksiginfo_t ksi;
>
> ksiginfo_init(&ksi);
> ksi.ksi_signo = sig;
> ksi.ksi_code = SI_KERNEL;
> (void) tdsignal(p, NULL, sig, &ksi);
1945a1958,1964
> void
> pksignal(struct proc *p, int sig, ksiginfo_t *ksi)
> {
>
> (void) tdsignal(p, NULL, sig, ksi);
> }
>
3145a3165
> ksiginfo_t ksi;
3147a3168,3171
> ksiginfo_init(&ksi);
> ksi.ksi_signo = sig;
> ksi.ksi_code = SI_KERNEL;
>