diff options
| author | Sean Eric Fagan <sef@FreeBSD.org> | 1997-12-06 04:11:14 +0000 |
|---|---|---|
| committer | Sean Eric Fagan <sef@FreeBSD.org> | 1997-12-06 04:11:14 +0000 |
| commit | 2a024a2b050c695d6e91e22374806cc3efaa60b2 (patch) | |
| tree | 6532da7d9d1ad16542fbcdf34502b9d8ad15eb84 /sys/kern/sys_process.c | |
| parent | ceb0cf87e893efc7331317d58fa5ddeadd8fa2a0 (diff) | |
Notes
Diffstat (limited to 'sys/kern/sys_process.c')
| -rw-r--r-- | sys/kern/sys_process.c | 21 |
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); +} |
