Pstore dmesg 注册篇

1. 注册pstore_info,提供pstore存储区域和操作函数;

static int ramoops_probe(struct platform_device *pdev)
{
	struct ramoops_context * cxt = &oops_cxt;
	
	/*
	 * Only a single ramoops area allowed at a time
	 */
	if (cxt->max_dump_cnt)
		goto fail_out;
	
	cxt->pstore.data = cxt;

	err = pstore_register(&cxt-pstore);
}

static struct ramoops_context oops_cxt = {
	.pstore = {
		.owner  = THIS_MODULE,
		.name   = "ramoops",
		.open   = ramoops_pstore_open,
		.read   = ramoops_pstore_read,
		.write_buf = ramoops_pstore_write_buf,
		.erase  = ramoops_pstore_erase,
	};
};


2. 注册kmsg dumper;

int pstore_register(struct pstore_info * psi)
{
	/* 用 write_buf 实现 write */
	if (!psi->write)
		psi->write = pstore_write_compat;
	
	/* only one psinfo */
	psinfo = psi;
	
	allocate_buf_for_compression();
	
	/* 注册kernel dump */
	pstore_register_kmsg();
}

static void allocate_buf_for_compression(void)
{
	/* 用于压缩的log */
	big_oops_buf_sz = (psinfo->bufsize * 100) / cmpr;
	big_oops_buf = kmalloc(big_oops_buf_sz, GFP_KERNEL);
}

static void pstore_register_kmsg(void )
{
	kmsg_dump_register(&pstore_dumper);
}

static struct kmsg_dumper pstore_dumper = {
	.dump = pstore_dump,
};



  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值