关于 printk函数 与 控制台 以及 kernel.printk 的关系 详解
2015-04-01 15:14
661 查看
今儿在调查关于 kernel.printk 功能时,发现网上很多理论讲的不清楚,甚至讲错了;
所以 自己 做了个实验来 验证 kernel.printk 的功能;
① kernel.printk = 4 4 1 7(一般默认的情况);
加载驱动模块时,显示信息如下:(会发现insmod 时没有信息打印)
root@QEMU(MPC):/# root@QEMU(MPC):/# lsmod Module Size Used by opwfpga 33808 0 fpga 78104 0 interrupt 18216 1 fpga t4240 44372 0 pld 18124 0 phy 13698 0 flash 13720 0 e6500 11760 0 dsfpga 26885 0 clkfpga 97367 1 fpga bprfpga 22217 0 root@QEMU(MPC):/# root@QEMU(MPC):/# insmod hello_drv.ko root@QEMU(MPC):/# root@QEMU(MPC):/# lsmod Module Size Used by <strong><span style="color:#33cc00;">hello_drv 1280 0 </span></strong>opwfpga 33808 0 fpga 78104 0 interrupt 18216 1 fpga t4240 44372 0 pld 18124 0 phy 13698 0 flash 13720 0 e6500 11760 0 dsfpga 26885 0 clkfpga 97367 1 fpga bprfpga 22217 0 root@QEMU(MPC):/# root@QEMU(MPC):/# rmmod hello_drv root@QEMU(MPC):/#
② kernel.printk = 7 4 1 7(往sysctl.conf 中加入 该值并保存,之后执行命令 sysctl -p )
执行命令sysctl -p命令以及加载驱动模块,显示信息如下 :(会发现insmod 时有信息打印)
root@QEMU(MPC):/# sysctl -p kernel.hostname = QEMU(MPC) kernel.sysrq = 1 kernel.core_uses_pid = 1 kernel.panic_on_oops = 1 error: "kernel.unknown_nmi_panic" is an unknown key kernel.core_pattern = /msyssrv/log/core.%p.%e.%s kernel.shmmax = 1000000000 kernel.shmall = 2097152 kernel.msgmni = 10000 kernel.msgmax = 81920 kernel.msgmnb = 16777216 kernel.sem = 6000 32000 320 1280 fs.mqueue.queues_max = 5120 fs.mqueue.msgsize_max = 481280 fs.mqueue.msg_max = 5632 net.ipv4.ip_default_ttl = 255 net.ipv4.ip_forward = 0 net.ipv4.conf.default.rp_filter = 1 net.ipv4.conf.default.arp_filter = 1 net.ipv4.conf.all.arp_filter = 1 net.ipv4.tcp_keepalive_time = 30 net.ipv4.tcp_keepalive_probes = 2 net.ipv4.tcp_keepalive_intvl = 30 net.ipv4.tcp_wmem = 4096 131070 4194304 net.ipv4.tcp_rmem = 4096 131070 4194304 net.ipv4.neigh.default.unres_qlen = 100 net.ipv6.conf.default.hop_limit = 255 net.ipv6.neigh.default.unres_qlen = 100 net.core.rmem_max = 1572864 net.core.wmem_max = 1572864 net.core.rmem_default = 262142 net.core.wmem_default = 262142 error: "net.sctp.addip_enable" is an unknown key vm.overcommit_ratio = 99 vm.overcommit_memory = 2 kernel.printk = 7 4 1 7 root@QEMU(MPC):/# root@QEMU(MPC):/# lsmod Module Size Used by opwfpga 33808 0 fpga 78104 0 interrupt 18216 1 fpga t4240 44372 0 pld 18124 0 phy 13698 0 flash 13720 0 e6500 11760 0 dsfpga 26885 0 clkfpga 97367 1 fpga bprfpga 22217 0 root@QEMU(MPC):/# root@QEMU(MPC):/# insmod hello_drv.ko Hello module init root@QEMU(MPC):/# lsmod Module Size Used by hello_drv 1280 0 opwfpga 33808 0 fpga 78104 0 interrupt 18216 1 fpga t4240 44372 0 pld 18124 0 phy 13698 0 flash 13720 0 e6500 11760 0 dsfpga 26885 0 clkfpga 97367 1 fpga bprfpga 22217 0 root@QEMU(MPC):/# rmmod hello_drv Hello module exit root@QEMU(MPC):/# root@QEMU(MPC):/#
③kernel.printk = 7 4 1 6(往sysctl.conf 中加入 该值并保存,之后执行命令 sysctl -p )
执行命令sysctl -p命令以及加载驱动模块,显示信息如下 :(会发现insmod 时有信息打印)
root@QEMU(MPC):/# root@QEMU(MPC):/# sysctl -p kernel.hostname = QEMU(MPC) kernel.sysrq = 1 kernel.core_uses_pid = 1 kernel.panic_on_oops = 1 error: "kernel.unknown_nmi_panic" is an unknown key kernel.core_pattern = /msyssrv/log/core.%p.%e.%s kernel.shmmax = 1000000000 kernel.shmall = 2097152 kernel.msgmni = 10000 kernel.msgmax = 81920 kernel.msgmnb = 16777216 kernel.sem = 6000 32000 320 1280 fs.mqueue.queues_max = 5120 fs.mqueue.msgsize_max = 481280 fs.mqueue.msg_max = 5632 net.ipv4.ip_default_ttl = 255 net.ipv4.ip_forward = 0 net.ipv4.conf.default.rp_filter = 1 net.ipv4.conf.default.arp_filter = 1 net.ipv4.conf.all.arp_filter = 1 net.ipv4.tcp_keepalive_time = 30 net.ipv4.tcp_keepalive_probes = 2 net.ipv4.tcp_keepalive_intvl = 30 net.ipv4.tcp_wmem = 4096 131070 4194304 net.ipv4.tcp_rmem = 4096 131070 4194304 net.ipv4.neigh.default.unres_qlen = 100 net.ipv6.conf.default.hop_limit = 255 net.ipv6.neigh.default.unres_qlen = 100 net.core.rmem_max = 1572864 net.core.wmem_max = 1572864 net.core.rmem_default = 262142 net.core.wmem_default = 262142 error: "net.sctp.addip_enable" is an unknown key vm.overcommit_ratio = 99 vm.overcommit_memory = 2 kernel.printk = 7 4 1 6 root@QEMU(MPC):/# root@QEMU(MPC):/# lsmod Module Size Used by opwfpga 33808 0 fpga 78104 0 interrupt 18216 1 fpga t4240 44372 0 pld 18124 0 phy 13698 0 flash 13720 0 e6500 11760 0 dsfpga 26885 0 clkfpga 97367 1 fpga bprfpga 22217 0 root@QEMU(MPC):/# insmod hello_drv.ko Hello module init root@QEMU(MPC):/# root@QEMU(MPC):/# lsmod Module Size Used by hello_drv 1280 0 opwfpga 33808 0 fpga 78104 0 interrupt 18216 1 fpga t4240 44372 0 pld 18124 0 phy 13698 0 flash 13720 0 e6500 11760 0 dsfpga 26885 0 clkfpga 97367 1 fpga bprfpga 22217 0 root@QEMU(MPC):/# rmmod hello_drv Hello module exit root@QEMU(MPC):/#
总结: 所以当 kernel.printk 的第一个值(控制台打印基本信息) 大于 最后一个值(缺省时 printk 打印级别 )
信息才会显现到控制台;
相关文章推荐
- 关于JS面向对象中原型和原型链以及他们之间的关系及this的详解
- 关于JS面向对象中原型和原型链以及他们之间的关系及this的详解
- 近期找的一些实用资料,关于Learning以及Kernel的
- 关于Controller中Ramp up、Duration、Ramp down虚拟用户事务执行情况以及二者关系的实验
- 关于为什么在有继承关系的类结构中,析构函数destructor要是virtual以及如果不是会发生什么
- 举例详解:Hibernate单向多对多单向关系(有关联表)以及多对一单向关系(无关联表)
- 关于gcc、glibc和binutils模块之间的关系,以及在现有系统上升级glibc
- eCPM的意义以及流量、单价和点击率的关系详解
- java全角、半角字符的关系以及转换详解
- 关于树的公式汇总以及推导详解
- 关于gcc、glibc和binutils模块之间的关系,以及在现有系统上如何升级的总结
- 线程详解,以及linux下线程和进程的关系
- 有必要澄清两个基本概念--算法和过程的关系以及关于程序设计方法论的一些看法
- 控制台下关于进程和本地端口的关系
- 关于编译与内存的关系,以及执行时内存的划分
- 详解关于Lua栈介绍以及实例
- 有必要澄清两个基本概念--算法和过程的关系以及关于程序设计方法论的一些看法
- 关于 TApplication 详解 一 ---- 继承关系
- 关于芯片 ,处理器,内核,以及内存外存,外设等之间的关系小结
- 关于MFC中Document, Frame, View以及Document Template结构关系