socsvn commit: r289924 - in soc2013/def/crashdump-head/sys: kern sys
def at FreeBSD.org
def at FreeBSD.org
Wed Aug 19 14:56:45 UTC 2015
Author: def
Date: Wed Aug 19 14:56:43 2015
New Revision: 289924
URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=289924
Log:
Write zeroes for headers' alignment.
Modified:
soc2013/def/crashdump-head/sys/kern/kern_dump.c
soc2013/def/crashdump-head/sys/sys/kerneldump.h
Modified: soc2013/def/crashdump-head/sys/kern/kern_dump.c
==============================================================================
--- soc2013/def/crashdump-head/sys/kern/kern_dump.c Wed Aug 19 14:54:54 2015 (r289923)
+++ soc2013/def/crashdump-head/sys/kern/kern_dump.c Wed Aug 19 14:56:43 2015 (r289924)
@@ -115,6 +115,32 @@
}
int
+dumpsys_buf_seek(struct dumperinfo *di, size_t sz)
+{
+ uint8_t buf[DEV_BSIZE];
+ size_t nbytes;
+ int error;
+
+ bzero(buf, sizeof(buf));
+
+ while (sz > 0) {
+ if (sz >= sizeof(buf))
+ nbytes = sizeof(buf);
+ else
+ nbytes = sz;
+
+ error = dump_write(di, buf, 0, dumplo, nbytes);
+ if (error)
+ return (error);
+ dumplo += nbytes;
+
+ sz -= nbytes;
+ }
+
+ return (0);
+}
+
+int
dumpsys_buf_write(struct dumperinfo *di, char *ptr, size_t sz)
{
size_t len;
@@ -370,7 +396,9 @@
* boundary. We cannot use MD_ALIGN on dumplo, because we don't
* care and may very well be unaligned within the dump device.
*/
- dumplo += hdrgap;
+ error = dumpsys_buf_seek(di, (size_t)hdrgap);
+ if (error)
+ goto fail;
/* Dump memory chunks (updates dumplo) */
error = dumpsys_foreach_chunk(dumpsys_cb_dumpdata, di);
@@ -381,6 +409,7 @@
error = dump_write_header(di, &kdh, 0, dumplo);
if (error)
goto fail;
+ dumplo += sizeof(kdh);
/* Signal completion, signoff and exit stage left. */
dump_write(di, NULL, 0, 0, 0);
Modified: soc2013/def/crashdump-head/sys/sys/kerneldump.h
==============================================================================
--- soc2013/def/crashdump-head/sys/sys/kerneldump.h Wed Aug 19 14:54:54 2015 (r289923)
+++ soc2013/def/crashdump-head/sys/sys/kerneldump.h Wed Aug 19 14:56:43 2015 (r289924)
@@ -145,6 +145,7 @@
typedef int dumpsys_callback_t(struct dump_pa *, int, void *);
int dumpsys_foreach_chunk(dumpsys_callback_t, void *);
int dumpsys_cb_dumpdata(struct dump_pa *, int, void *);
+int dumpsys_buf_seek(struct dumperinfo *, size_t);
int dumpsys_buf_write(struct dumperinfo *, char *, size_t);
int dumpsys_buf_flush(struct dumperinfo *);
More information about the svn-soc-all
mailing list