On 2011-10-18 11:43, Wen Congyang wrote: > At 10/18/2011 04:36 PM, Jan Kiszka Write: >> On 2011-10-18 10:34, Richard W.M. Jones wrote: >> >> Yeah, I see. Could also be solved via gdb scripts, but crash is already >> there. >> >> But let's see if the formats actually differ. In the end, crash is just >> parsing the same information that also gdb sees. > > I think the format can be similar with diskdump/kdump/netdump: > > dump_header: 1 block > sub header: n blocks(n is stored in dump_header) > bitmap: m blocks(2m is stored in dump_header) > dumpable bitmap: m blocks > memory data(We can know whether a page is stored in the core by bitmap and > dumpable bitmap) > > The format of dump header(It's like kdump/diskdump): > struct disk_dump_header { > char signature[SIG_LEN]; /* = "QEMU " */ > int header_version; /* Dump header version */ > struct new_utsname utsname; /* copy of system_utsname */ > struct timeval timestamp; /* Time stamp */ > unsigned int status; > int block_size; /* Size of a block in byte */ > int sub_hdr_size; /* Size of arch dependent > header in blocks */ > unsigned int bitmap_blocks; /* Size of Memory bitmap in > block */ > unsigned int max_mapnr; /* = max_mapnr */ > unsigned int total_ram_blocks;/* Number of blocks should be > written */ > unsigned int device_blocks; /* Number of total blocks in > * the dump device */ > unsigned int written_blocks; /* Number of written blocks */ > unsigned int current_cpu; /* CPU# which handles dump */ > int nr_cpus; /* Number of CPUs */ > }; > > The sub header can contains all registers's value on each vcpu, and other > information, > for example: > struct qemu_sub_header { > unsigned long start_pfn; > unsigned long end_pfn; > off_t offset_note; > unsigned long size_note; > };
So is this a standard format or only "similar" to something? Which tools will understand it out-of-the-box? If it's not standard, why? Jan -- Siemens AG, Corporate Technology, CT T DE IT 1 Corporate Competence Center Embedded Linux