如何在vmcore中查看额外的硬件转储

时间:2019-03-25 14:10:00

标签: c linux linux-kernel linux-device-driver

我正在使用Linux kexec机制在Linux上启用核心转储流。该流程以vmcore elf映像结束,该映像反映了崩溃时刻的全部内存情况。 输出vmcore elf映像的内核中的vmcore驱动程序具有vmcore_add_device_dump API,该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文件之后,我想查看此数据,但是不知道该怎么做。 也许正确的方法是使用崩溃实用程序,但是如何?

请告知

0 个答案:

没有答案