printk解析

需求:嵌入式开发Modem,Modem会不可预料地死掉,问题出现后只能重新上电重启Modem。而且重启之后,出错之前的信息都丢失了。一个思路是修改内核的printk模块,将printk都写到flash中保存起来。重新上电后,查看这一块flash的内容。

 

printk

    --vprintk  将待打印的句子输出到tbuf中。如果没有制定字符的级别,默认加上一个。

        --release_console_sem  调用console的驱动将字符串输出到终端/串口。也就是说,我可以创建一种字符设备。它负责将所有的字符串写到flash。

              --call_console_drivers  调用console的驱动写字符串。字符串被保存在log_buf中。要计算msg_level

                  --_call_console_drivers 

                      --__call_console_drivers  遍历console_drivers链

 

相关函数:

    setup.c/setup_arch() 

        --pdc_console_init()   pdc是一种tty设备

             --pdc_console_init_force() 

                 --register_console()  注册设备。可以从pdc学习如何做pdc设备。pdc_cons.c

    register_console() 注册终端

        --

 

关键结构体:

console  实际应用中,并不需要使用所有字段

    --name

    --write  写函数,对pdc设备,是pdc_iodc_print

    --read   读函数,并不一定有

    --device  获取tty_driver,并更新index

    --unblank

    --setup

    --early_setup

    --flags

    --index

    --cflag    flag包括CON_PRINTBUFFER/CON_CONSDEV/CON_ENABLED/CON_BOOT/CON_ANYTIME/CON_BRL

    --data

    --next  指向下一个console

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值