summaryrefslogtreecommitdiff
path: root/sys/kern/sys_process.c
diff options
context:
space:
mode:
authorSean Eric Fagan <sef@FreeBSD.org>1997-12-06 04:11:14 +0000
committerSean Eric Fagan <sef@FreeBSD.org>1997-12-06 04:11:14 +0000
commit2a024a2b050c695d6e91e22374806cc3efaa60b2 (patch)
tree6532da7d9d1ad16542fbcdf34502b9d8ad15eb84 /sys/kern/sys_process.c
parentceb0cf87e893efc7331317d58fa5ddeadd8fa2a0 (diff)
Notes
Diffstat (limited to 'sys/kern/sys_process.c')
-rw-r--r--sys/kern/sys_process.c21
1 files changed, 20 insertions, 1 deletions
diff --git a/sys/kern/sys_process.c b/sys/kern/sys_process.c
index 28007f7206c4..c28911546a31 100644
--- a/sys/kern/sys_process.c
+++ b/sys/kern/sys_process.c
@@ -28,7 +28,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: sys_process.c,v 1.31 1997/11/06 19:29:22 phk Exp $
+ * $Id: sys_process.c,v 1.32 1997/11/12 12:28:12 tegge Exp $
*/
#include <sys/param.h>
@@ -503,3 +503,22 @@ trace_req(p)
{
return 1;
}
+
+/*
+ * stopevent()
+ * Stop a process because of a procfs event;
+ * stay stopped until p->p_step is cleared
+ * (cleared by PIOCCONT in procfs).
+ */
+
+void
+stopevent(struct proc *p, unsigned int event, unsigned int val) {
+ p->p_step = 1;
+
+ do {
+ p->p_xstat = val;
+ p->p_stype = event; /* Which event caused the stop? */
+ wakeup(&p->p_stype); /* Wake up any PIOCWAIT'ing procs */
+ tsleep(&p->p_step, PWAIT, "stopevent", 0);
+ } while (p->p_step);
+}