summaryrefslogtreecommitdiffstats
path: root/sys/kern/vfs_subr.c
diff options
context:
space:
mode:
authorluoqi <luoqi@FreeBSD.org>2000-01-07 08:36:44 +0000
committerluoqi <luoqi@FreeBSD.org>2000-01-07 08:36:44 +0000
commite100d44d5538cc21abeba58f459ce9eb497651a9 (patch)
treeca8740d97497e39a1d8bb5f7f15e17f85fa4c506 /sys/kern/vfs_subr.c
parente69b1ea5c9a5104ae1afe7dd26c89222983ed04e (diff)
downloadFreeBSD-src-e100d44d5538cc21abeba58f459ce9eb497651a9.zip
FreeBSD-src-e100d44d5538cc21abeba58f459ce9eb497651a9.tar.gz
Introduce a mechanism to suspend/resume system processes. Suspend syncer
and bufdaemon prior to disk sync during system shutdown.
Diffstat (limited to 'sys/kern/vfs_subr.c')
-rw-r--r--sys/kern/vfs_subr.c21
1 files changed, 14 insertions, 7 deletions
diff --git a/sys/kern/vfs_subr.c b/sys/kern/vfs_subr.c
index 059ca2a..f59d819 100644
--- a/sys/kern/vfs_subr.c
+++ b/sys/kern/vfs_subr.c
@@ -46,20 +46,23 @@
#include <sys/param.h>
#include <sys/systm.h>
+#include <sys/buf.h>
+#include <sys/conf.h>
+#include <sys/dirent.h>
+#include <sys/domain.h>
+#include <sys/eventhandler.h>
#include <sys/fcntl.h>
#include <sys/kernel.h>
-#include <sys/proc.h>
#include <sys/kthread.h>
#include <sys/malloc.h>
#include <sys/mount.h>
+#include <sys/proc.h>
+#include <sys/reboot.h>
#include <sys/socket.h>
-#include <sys/vnode.h>
#include <sys/stat.h>
-#include <sys/buf.h>
-#include <sys/domain.h>
-#include <sys/dirent.h>
+#include <sys/sysctl.h>
#include <sys/vmmeter.h>
-#include <sys/conf.h>
+#include <sys/vnode.h>
#include <machine/limits.h>
@@ -72,7 +75,6 @@
#include <vm/vm_pager.h>
#include <vm/vnode_pager.h>
#include <vm/vm_zone.h>
-#include <sys/sysctl.h>
static MALLOC_DEFINE(M_NETADDR, "Export Host", "Export host address structure");
@@ -975,9 +977,14 @@ sched_sync(void)
int s;
struct proc *p = updateproc;
+ EVENTHANDLER_REGISTER(shutdown_pre_sync, shutdown_kproc, p,
+ SHUTDOWN_PRI_LAST);
+
p->p_flag |= P_BUFEXHAUST;
for (;;) {
+ kproc_suspend_loop(p);
+
starttime = time_second;
/*
OpenPOWER on IntegriCloud