summaryrefslogtreecommitdiffstats
path: root/sys
diff options
context:
space:
mode:
authorfenner <fenner@FreeBSD.org>2002-05-04 17:45:48 +0000
committerfenner <fenner@FreeBSD.org>2002-05-04 17:45:48 +0000
commit4a04ef1ff890214aa92df3050d7db8206275f618 (patch)
tree0dfb2f7a72e9f4757b60d199f102dd822886a2b3 /sys
parent226cd40e3da30c9b459363d3da47dc3f4a309bf9 (diff)
downloadFreeBSD-src-4a04ef1ff890214aa92df3050d7db8206275f618.zip
FreeBSD-src-4a04ef1ff890214aa92df3050d7db8206275f618.tar.gz
Restore the ability interrupt dumps on i386, based on
the old kern_shutdown.c . Other archs might be able to use similar code but I don't have anything to test on.
Diffstat (limited to 'sys')
-rw-r--r--sys/amd64/amd64/dump_machdep.c7
-rw-r--r--sys/i386/i386/dump_machdep.c7
-rw-r--r--sys/i386/i386/i386dump.c7
3 files changed, 21 insertions, 0 deletions
diff --git a/sys/amd64/amd64/dump_machdep.c b/sys/amd64/amd64/dump_machdep.c
index 09db68b..c671a5a 100644
--- a/sys/amd64/amd64/dump_machdep.c
+++ b/sys/amd64/amd64/dump_machdep.c
@@ -38,6 +38,7 @@
#include <sys/param.h>
#include <sys/systm.h>
#include <sys/conf.h>
+#include <sys/cons.h>
#include <sys/kernel.h>
#include <sys/kerneldump.h>
#include <vm/vm.h>
@@ -56,6 +57,7 @@ dumpsys(struct dumperinfo *di)
u_int count, left, u;
void *va;
int i, mb;
+ int c;
printf("Dumping %u MB\n", Maxmem / (1024*1024 / PAGE_SIZE));
@@ -104,6 +106,11 @@ dumpsys(struct dumperinfo *di)
count += left;
dumplo += left * PAGE_SIZE;
addr += left * PAGE_SIZE;
+ if ((c = cncheckc()) == 0x03) {
+ printf("\nDump aborted.\n");
+ return;
+ } else if (c != -1)
+ printf("[CTRL-C to abort] ");
}
if (i)
printf("\nDump failed writing data (%d)\n", i);
diff --git a/sys/i386/i386/dump_machdep.c b/sys/i386/i386/dump_machdep.c
index 09db68b..c671a5a 100644
--- a/sys/i386/i386/dump_machdep.c
+++ b/sys/i386/i386/dump_machdep.c
@@ -38,6 +38,7 @@
#include <sys/param.h>
#include <sys/systm.h>
#include <sys/conf.h>
+#include <sys/cons.h>
#include <sys/kernel.h>
#include <sys/kerneldump.h>
#include <vm/vm.h>
@@ -56,6 +57,7 @@ dumpsys(struct dumperinfo *di)
u_int count, left, u;
void *va;
int i, mb;
+ int c;
printf("Dumping %u MB\n", Maxmem / (1024*1024 / PAGE_SIZE));
@@ -104,6 +106,11 @@ dumpsys(struct dumperinfo *di)
count += left;
dumplo += left * PAGE_SIZE;
addr += left * PAGE_SIZE;
+ if ((c = cncheckc()) == 0x03) {
+ printf("\nDump aborted.\n");
+ return;
+ } else if (c != -1)
+ printf("[CTRL-C to abort] ");
}
if (i)
printf("\nDump failed writing data (%d)\n", i);
diff --git a/sys/i386/i386/i386dump.c b/sys/i386/i386/i386dump.c
index 09db68b..c671a5a 100644
--- a/sys/i386/i386/i386dump.c
+++ b/sys/i386/i386/i386dump.c
@@ -38,6 +38,7 @@
#include <sys/param.h>
#include <sys/systm.h>
#include <sys/conf.h>
+#include <sys/cons.h>
#include <sys/kernel.h>
#include <sys/kerneldump.h>
#include <vm/vm.h>
@@ -56,6 +57,7 @@ dumpsys(struct dumperinfo *di)
u_int count, left, u;
void *va;
int i, mb;
+ int c;
printf("Dumping %u MB\n", Maxmem / (1024*1024 / PAGE_SIZE));
@@ -104,6 +106,11 @@ dumpsys(struct dumperinfo *di)
count += left;
dumplo += left * PAGE_SIZE;
addr += left * PAGE_SIZE;
+ if ((c = cncheckc()) == 0x03) {
+ printf("\nDump aborted.\n");
+ return;
+ } else if (c != -1)
+ printf("[CTRL-C to abort] ");
}
if (i)
printf("\nDump failed writing data (%d)\n", i);
OpenPOWER on IntegriCloud