当系统重启后,可以把数据从pstore中读出来,并创建文件节点,提供用户接口来获取文本数据。
static int ramoops_probe(struct platform_device * pdev)
{
/* 从pstore中取出数据 */
err = ramoops_init_przs(dev, cxt, &paddr, dump_mem_sz);
/* 写入文件节点 */
err = pstore_register(&cxt->pstore);
}
1. 读取数据
static int ramoops_init_przs(struct device * dev, struct ramoops_context cxt,
phys_addr_t * paddr, size_t dump_mem_sz)
{
for (i = 0; i < cxt->max_dump_cnt; i++) {
cxt->przs[i] = persistent_ram_new(*paddr, cxt->record_size, 0,
&cxt->ecc_info,
cxt->memtype, 0);
*paddr += cxt->record_size;
}
return 0;
}
struct persistent_ram_zone * persistent_ram_new(phys_addr_t start, size_t size,
u32 sig, struct persistent_ram_ecc_info * ecc_info,
unsigned int memtype, u32 flags)
{
struct persistent_ram_zone * prz;
re