Changeset View
Changeset View
Standalone View
Standalone View
sys/i386/i386/minidump_machdep_base.c
Show First 20 Lines • Show All 170 Lines • ▼ Show 20 Lines | |||||
#define minidumpsys minidumpsys_nopae | #define minidumpsys minidumpsys_nopae | ||||
#define IdlePTD IdlePTD_nopae | #define IdlePTD IdlePTD_nopae | ||||
#endif | #endif | ||||
int | int | ||||
minidumpsys(struct dumperinfo *di) | minidumpsys(struct dumperinfo *di) | ||||
{ | { | ||||
uint64_t dumpsize; | uint64_t dumpsize; | ||||
kpaddr_t *dump_avail_out; | |||||
uint32_t ptesize; | uint32_t ptesize; | ||||
vm_offset_t va; | vm_offset_t va; | ||||
int error; | int error; | ||||
uint64_t pa; | uint64_t pa; | ||||
pd_entry_t *pd; | pd_entry_t *pd; | ||||
pt_entry_t *pt; | pt_entry_t *pt; | ||||
int i, j, k, bit; | int i, j, k, bit; | ||||
struct minidumphdr mdhdr; | struct minidumphdr mdhdr; | ||||
▲ Show 20 Lines • Show All 68 Lines • ▼ Show 20 Lines | if (error != 0) | ||||
goto fail; | goto fail; | ||||
printf("Physical memory: %ju MB\n", ptoa((uintmax_t)physmem) / 1048576); | printf("Physical memory: %ju MB\n", ptoa((uintmax_t)physmem) / 1048576); | ||||
printf("Dumping %llu MB:", (long long)dumpsize >> 20); | printf("Dumping %llu MB:", (long long)dumpsize >> 20); | ||||
/* Dump my header */ | /* Dump my header */ | ||||
bzero(&fakept, sizeof(fakept)); | bzero(&fakept, sizeof(fakept)); | ||||
bcopy(&mdhdr, &fakept, sizeof(mdhdr)); | bcopy(&mdhdr, &fakept, sizeof(mdhdr)); | ||||
dump_avail_out = (kpaddr_t *)((char *)fakept + sizeof(mdhdr)); | |||||
for (i = 0; dump_avail[i + 1] != 0; i++) { | |||||
dump_avail_out[i] = dump_avail[i]; | |||||
dump_avail_out[i + 1] = dump_avail[i + 1]; | |||||
} | |||||
dump_avail_out[i] = dump_avail_out[i + 1] = 0; | |||||
error = blk_write(di, (char *)&fakept, 0, PAGE_SIZE); | error = blk_write(di, (char *)&fakept, 0, PAGE_SIZE); | ||||
if (error) | if (error) | ||||
goto fail; | goto fail; | ||||
/* Dump msgbuf up front */ | /* Dump msgbuf up front */ | ||||
error = blk_write(di, (char *)msgbufp->msg_ptr, 0, round_page(msgbufp->msg_size)); | error = blk_write(di, (char *)msgbufp->msg_ptr, 0, round_page(msgbufp->msg_size)); | ||||
if (error) | if (error) | ||||
goto fail; | goto fail; | ||||
▲ Show 20 Lines • Show All 75 Lines • Show Last 20 Lines |