git: 244ab56611c1 - main - Add curproc_sigkilled()
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Fri, 08 Oct 2021 00:22:07 UTC
The branch main has been updated by kib:
URL: https://cgit.FreeBSD.org/src/commit/?id=244ab56611c15e737b76cb3950c32e37b67c26fc
commit 244ab56611c15e737b76cb3950c32e37b67c26fc
Author: Konstantin Belousov <kib@FreeBSD.org>
AuthorDate: 2021-10-05 05:08:51 +0000
Commit: Konstantin Belousov <kib@FreeBSD.org>
CommitDate: 2021-10-08 00:21:43 +0000
Add curproc_sigkilled()
Function returns an indicator that the process was killed with SIGKILL
Reviewed by: imp, markj
Tested by: pho
Sponsored by: The FreeBSD Foundation
MFC after: 1 week
Differential revision: https://reviews.freebsd.org/D32313
---
sys/kern/kern_sig.c | 23 +++++++++++++++++++++++
sys/sys/proc.h | 1 +
2 files changed, 24 insertions(+)
diff --git a/sys/kern/kern_sig.c b/sys/kern/kern_sig.c
index c891cc1fbbad..edafa7eda57a 100644
--- a/sys/kern/kern_sig.c
+++ b/sys/kern/kern_sig.c
@@ -3296,6 +3296,29 @@ sig_intr(void)
return (ret);
}
+bool
+curproc_sigkilled(void)
+{
+ struct thread *td;
+ struct proc *p;
+ struct sigacts *ps;
+ bool res;
+
+ td = curthread;
+ if ((td->td_flags & TDF_NEEDSIGCHK) == 0)
+ return (false);
+
+ p = td->td_proc;
+ PROC_LOCK(p);
+ ps = p->p_sigacts;
+ mtx_lock(&ps->ps_mtx);
+ res = SIGISMEMBER(td->td_sigqueue.sq_signals, SIGKILL) ||
+ SIGISMEMBER(p->p_sigqueue.sq_signals, SIGKILL);
+ mtx_unlock(&ps->ps_mtx);
+ PROC_UNLOCK(p);
+ return (res);
+}
+
void
proc_wkilled(struct proc *p)
{
diff --git a/sys/sys/proc.h b/sys/sys/proc.h
index a9cef631529d..691bdae8b41a 100644
--- a/sys/sys/proc.h
+++ b/sys/sys/proc.h
@@ -1161,6 +1161,7 @@ int cpu_idle_wakeup(int);
extern void (*cpu_idle_hook)(sbintime_t); /* Hook to machdep CPU idler. */
void cpu_switch(struct thread *, struct thread *, struct mtx *);
void cpu_throw(struct thread *, struct thread *) __dead2;
+bool curproc_sigkilled(void);
void userret(struct thread *, struct trapframe *);
void cpu_exit(struct thread *);