Changeset View
Changeset View
Standalone View
Standalone View
sys/kern/kern_dump.c
Show First 20 Lines • Show All 48 Lines • ▼ Show 20 Lines | |||||
#define MD_ALIGN(x) roundup2((off_t)(x), PAGE_SIZE) | #define MD_ALIGN(x) roundup2((off_t)(x), PAGE_SIZE) | ||||
/* Handle buffered writes. */ | /* Handle buffered writes. */ | ||||
static size_t fragsz; | static size_t fragsz; | ||||
struct dump_pa dump_map[DUMPSYS_MD_PA_NPAIRS]; | struct dump_pa dump_map[DUMPSYS_MD_PA_NPAIRS]; | ||||
#if !defined(__powerpc__) && !defined(__sparc__) | #if !defined(__powerpc__) | ||||
void | void | ||||
dumpsys_gen_pa_init(void) | dumpsys_gen_pa_init(void) | ||||
{ | { | ||||
int n, idx; | int n, idx; | ||||
bzero(dump_map, sizeof(dump_map)); | bzero(dump_map, sizeof(dump_map)); | ||||
for (n = 0; n < nitems(dump_map); n++) { | for (n = 0; n < nitems(dump_map); n++) { | ||||
idx = n * 2; | idx = n * 2; | ||||
Show All 26 Lines | |||||
void | void | ||||
dumpsys_gen_unmap_chunk(vm_paddr_t pa __unused, size_t chunk __unused, | dumpsys_gen_unmap_chunk(vm_paddr_t pa __unused, size_t chunk __unused, | ||||
void *va __unused) | void *va __unused) | ||||
{ | { | ||||
} | } | ||||
#if !defined(__sparc__) | |||||
int | int | ||||
dumpsys_gen_write_aux_headers(struct dumperinfo *di) | dumpsys_gen_write_aux_headers(struct dumperinfo *di) | ||||
{ | { | ||||
return (0); | return (0); | ||||
} | } | ||||
#endif | |||||
int | int | ||||
dumpsys_buf_seek(struct dumperinfo *di, size_t sz) | dumpsys_buf_seek(struct dumperinfo *di, size_t sz) | ||||
{ | { | ||||
static uint8_t buf[DEV_BSIZE]; | static uint8_t buf[DEV_BSIZE]; | ||||
size_t nbytes; | size_t nbytes; | ||||
int error; | int error; | ||||
▲ Show 20 Lines • Show All 119 Lines • ▼ Show 20 Lines | while (mdp != NULL) { | ||||
error = (*cb)(mdp, seqnr++, arg); | error = (*cb)(mdp, seqnr++, arg); | ||||
if (error) | if (error) | ||||
return (-error); | return (-error); | ||||
mdp = dumpsys_pa_next(mdp); | mdp = dumpsys_pa_next(mdp); | ||||
} | } | ||||
return (seqnr); | return (seqnr); | ||||
} | } | ||||
#if !defined(__sparc__) | |||||
static off_t fileofs; | static off_t fileofs; | ||||
static int | static int | ||||
cb_dumphdr(struct dump_pa *mdp, int seqnr, void *arg) | cb_dumphdr(struct dump_pa *mdp, int seqnr, void *arg) | ||||
{ | { | ||||
struct dumperinfo *di = (struct dumperinfo*)arg; | struct dumperinfo *di = (struct dumperinfo*)arg; | ||||
Elf_Phdr phdr; | Elf_Phdr phdr; | ||||
uint64_t size; | uint64_t size; | ||||
▲ Show 20 Lines • Show All 130 Lines • ▼ Show 20 Lines | fail: | ||||
if (error == ECANCELED) | if (error == ECANCELED) | ||||
printf("\nDump aborted\n"); | printf("\nDump aborted\n"); | ||||
else if (error == E2BIG || error == ENOSPC) | else if (error == E2BIG || error == ENOSPC) | ||||
printf("\nDump failed. Partition too small.\n"); | printf("\nDump failed. Partition too small.\n"); | ||||
else | else | ||||
printf("\n** DUMP FAILED (ERROR %d) **\n", error); | printf("\n** DUMP FAILED (ERROR %d) **\n", error); | ||||
return (error); | return (error); | ||||
} | } | ||||
#endif |