Я включаю поток дампа памяти в моем Linux, используя механизм Linux kexec. Этот поток заканчивается изображением эльфа vmcore, отражающим ситуацию с полной памятью в момент сбоя.
Драйвер vmcore в ядре, который выводит образ vmcore elf, имеет vmcore_add_device_dump API, который используется для вставки некоторых дополнительных разделов аппаратной памяти в ELF.
Я использую этот API следующим образом:
int hw_dump_collect(void *buf, u32 *buf_size)
{
unsigned int val = 0xFEFE; // fill buf with hw data
memcpy(buf, &val, sizeof(unsigned int));
return 0;
}
static int hw_dump_vmcoredd_collect(struct vmcoredd_data *data, void *buf)
{
u32 len = data->size;
return hw_dump_collect(buf, &len);
}
int hw_dump_vmcore_add_dump(struct device *dev)
{
struct vmcoredd_data *data = vmalloc(sizeof (struct vmcoredd_data));
u32 len;
len = dev->data_len;
data->size = len;
snprintf(data->dump_name, sizeof(data->dump_name), "%s",
dev->dev->name);
data->vmcoredd_callback = hw_dump_vmcoredd_collect;
return vmcore_add_device_dump(data);
}
Однако, после создания файла vmcore я хочу посмотреть эти данные, но не знаю, как это сделать.
Может быть, правильный путь - утилита аварийного отключения, но как?
Пожалуйста, сообщите,