diff options
author | 2000-04-19 10:13:22 +0000 | |
---|---|---|
committer | 2000-04-19 10:13:22 +0000 | |
commit | 36e56753c4f04cba01267e6672fe1e8ef7ff854c (patch) | |
tree | 9535bdacce5c5d8c0216922ce6d61aaebcc8be22 | |
parent | Remove the roundrobin_attempts hack and replace it with per-process scheduling (diff) | |
download | wireguard-openbsd-36e56753c4f04cba01267e6672fe1e8ef7ff854c.tar.xz wireguard-openbsd-36e56753c4f04cba01267e6672fe1e8ef7ff854c.zip |
When logging genio, check if we need to yield in the same way as in uiomove.
-rw-r--r-- | sys/kern/kern_ktrace.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/sys/kern/kern_ktrace.c b/sys/kern/kern_ktrace.c index f328f16eb9b..f9c4ea277ab 100644 --- a/sys/kern/kern_ktrace.c +++ b/sys/kern/kern_ktrace.c @@ -1,4 +1,4 @@ -/* $OpenBSD: kern_ktrace.c,v 1.15 2000/04/19 08:35:37 art Exp $ */ +/* $OpenBSD: kern_ktrace.c,v 1.16 2000/04/19 10:13:22 art Exp $ */ /* $NetBSD: kern_ktrace.c,v 1.23 1996/02/09 18:59:36 christos Exp $ */ /* @@ -194,6 +194,12 @@ ktrgenio(vp, fd, rw, iov, len, error) buflen -= sizeof(struct ktr_genio); while (resid > 0) { + /* + * Don't allow this process to hog the cpu when doing + * huge I/O. + */ + if (p->p_schedflags & PSCHED_SHOULDYIELD) + preempt(NULL); cnt = min(iov->iov_len, buflen); if (copyin(iov->iov_base, cp, cnt)) goto done; |