首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Linux内核dev_info、dev_dbg、dev_err及动态调试

目前在kernel驱动代码,都不再建议直接使用printk直接添加打印信息,而是使用dev_info,dev_dbg,dev_err之类函数代替,虽然这些dev_xxx函数本质还是使用printk...打印,但是相比起printk: 支持打印模块信息、dev信息 支持动态调试(dynamic debug)方式 下面简述下这几个dev_xxx函数基本使用规则,以及动态调试使用方式。...动态打印调试基本原理 当编译选项CONFIG_DYNAMIC_DEBUG打开时候,在编译阶段,kernel会把所有使用dev_dbg()信息记录在一个table,这些信息我们可以从/mnt/dbg...dev_dbg()对于分析某些内核子系统或者驱动流程也十分有意义,例如,使能net/ipv4/ping.c调试开关,则可以观测ping运行原理。...代码分析 从代码角度,也很容易看出dev_dbg()设计: include/linux/device.h include/linux/dynamic_debug.h lib/dynamic_debug.c

7.3K21

《Essential Linux Dev

net_device结构体指针被传给该处理函数作为参数,它包含了网络接口名字,my_dev_event_handler()打印出了该信息: my_dev_event_handler: Val=1,...在整个类型中都有对它们使用,因此在大多数子目录,都能找到例子。其中一个例子是include/linux/blkdev.h定义request_queue结构体,它存放磁盘I/O请求链表。...wake_up_interruptible() include/linux/wait.h kernel/sched.c 唤醒一个正在等待队列睡眠任务,将其返回调度器运行队列。...set_current_state() include/linux/sched.h 设置一个进程运行状态,可以是如下状态一种:TASK_RUNNING、TASK_INTERRUPTIBLE...在内核没有信号处理函数,因此,你不得不显示地检查信号发起 call_usermodehelper() include/linux/kmod.h kernel/kmod.c 执行一个用户模式程序

2.1K20
您找到你想要的搜索结果了吗?
是的
没有找到

Linuxdev目录引发思考

/dev目录 如果将一个设备连接到Linux系统时,通常需要一个设备驱动程序才能正常工作。你可以通过设备文件或设备节点与设备驱动程序交互,这些是看起来像普通文件特殊文件。...以前,如果你想在系统添加一个设备,你只需要在/dev添加设备文件,然后可能就会忘记它。重复几次,你就会发现哪里有问题了。/dev目录会被你很久以前升级或停止使用设备静态设备文件弄得乱七八糟。...您可能听说过在现代系统实际上并没有使用SCSI设备,但是我们Linux系统将SCSI磁盘与/dev硬盘驱动器相对应。...PATA设备 有时在旧系统,你可能会看到硬盘驱动器以hd前缀引用: /dev/hda -第一块硬盘 /dev/hdd2 -第4块硬盘第二个分区 sysfs Sysfs是很久以前创建,目的是更好地管理系统上设备...它为我们提供了比在/dev目录能够看到更详细信息。目录/sys和/dev在某些方面看起来非常相似,但它们确实有很大不同。

5.6K20

Linuxdev目录介绍

Linux之设备文件目录 01 dev文件目录介绍 Linuxdev文件目录全称是device设备英文,这个目录包含了所有linux中使用外部设备,但是不包含外部设备驱动信息。...on /dev/sda3 G 6.3G G % / tmpfs 7.8G K 7.8G % /dev/shm /dev/sda1...,/dev/sda2等等,上面命令结果文件系统就和这个一样。...tmpfs配置大小并不会真正占用这块内存,如果/dev/shm/下没有任何文件,它占用内存实际上就是0字节;如果它最大为1G,里头放有100M文件,那剩余900M仍然可为其它应用程序所使用,但它所占用...它用途如下: LINUX可以把一些程序临时文件放置在tmpfs,利用tmpfs比硬盘速度快特点提升系统性能。 3.

7.9K10

Linux包名xxx和xxx-dev有什么区别?

引入 在安装包时候,有时候需要安装xxx包,有时候又需要安装xxx-dev包 (在CentOS系列发行版上则是xxx-devel)。这两类包之间又什么区别呢? 2....结论 不包含-dev包里面包含是运行所需要二进制文件或者连接库文件(如xxx.so),而包含-dev包则包含包源码文件(如.h文件),为是在编译使用了这些库程序时候,能找到对应头文件,...否则只有二进制文件或者.so文件,编译时会报代码找不到头文件错误。...如果想要编译一个叫lxml库,它依赖Python源码,例如这里代码依赖Python.h这个文件,因此我们需要安装python-dev包,把Python.h安装到本地上,这样lxml包才能正常安装。

51140

linux重要目录之proc和dev目录

/proc/目录 虚拟文件系统,将内核与进程状态归档为文本文件(系统信息都存放这目录下) Linux系统上/proc目录是一种文件系统,即proc文件系统。.../proc/modules 目前我们 Linux 已经加载模块列表,也可以想成是驱动程序! /proc/mounts 系统已经挂载数据,就是用 mount 这个命令呼叫出来数据啦!.../dev/目录 设备文件分为两种:块设备文件(b)和字符设备文件(c) 设备文件一般存放在/dev目录下 dev是设备(device)英文缩写。/dev这个目录对所有的用户都十分重要。...因为在这个目录包含了所有Linux系统中使用外部设备。但是这里并不是放外部设备驱动程序,这一点和windows,dos操作系统不一样。它实际上是一个访问这些外部设备端口。...[0-9] /dev/pilot => /dev/ttyS[0-9] /dev/random 随机数设备 /dev/urandom 随机数设备 相关文章 linux重要目录之etc linux重要目录之

3.1K20

linux重要目录之proc和dev目录

/proc/目录 虚拟文件系统,将内核与进程状态归档为文本文件(系统信息都存放这目录下) Linux系统上/proc目录是一种文件系统,即proc文件系统。.../proc/modules 目前我们 Linux 已经加载模块列表,也可以想成是驱动程序啦!.../dev/目录 设备文件分为两种:块设备文件(b)和字符设备文件(c) 设备文件一般存放在/dev目录下 dev是设备(device)英文缩写。/dev这个目录对所有的用户都十分重要。...因为在这个目录包含了所有Linux系统中使用外部设备。但是这里并不是放外部设备驱动程序,这一点和windows,dos操作系统不一样。它实际上是一个访问这些外部设备端口。...hdc /dev/modem => /dev/ttyS[0-9] /dev/pilot => /dev/ttyS[0-9] /dev/random

3.9K00

Dev Club 分享】深度学习在 OCR 应用

Dev Club 是一个交流移动开发技术,结交朋友,扩展人脉社群,成员都是经过审核移动开发工程师。每周都会举行嘉宾分享,话题讨论等活动。...OCR(光学字符识别)旨在从图片中检测和识别文字信息,本次分享将介绍我们在OCR技术研发过程一些方法和经验总结。...近些年深度学习在人脸识别、目标检测与分类达到了前所未有的高度,也开启了深度学习在文字分类新浪潮。...Google在photoOCR设计了一套基于HOG特征作为输入5层CNN网络作为OCR识别模型,该套系统在Google多项产品得到成功应用。...参考问题3回答 Q5:亚飞老师好,通用场景要面临不同环境,比如在移动端应用OCR技术,在处理不同噪声,模糊,光照不均等情形时,有什么处理经验可借鉴和分享么?

3.6K80

ORA-000845 与 devshm(tempfs)

#从上面的描述可知,/dev/shm大小应该至少是当前系统每一个实例SGA_MAX_SIZE,个人认为这个描述不是很准确 #下面查看告警日志 [oracle@linux1 trace]$ more...,/dev/shm至少是1GB,因为我们参数文件定义MEMORY_TARGET为1GB #同时也给出了/dev/shm当前已使用和剩余空间大小。...剩余空间大小901312512不够1GB,因此需要考虑增加dev/shm或减少MEMORY_TARGET值 #延伸思考 /dev/shm实际上就是对应到tmpfs,也可以称之为临时文件系统(不是块设备...#当前系统/dev/shm [oracle@linux1 trace]$ df -h | grep shm           tmpfs                1014M  154M  860M...  16% /dev/shm [oracle@linux1 ~]$ ls -hltr /dev/shm total 154M -rw-r----- 1 grid oinstall 4.0M Nov 14

40910

Centos7利用内存优化磁盘缓存读写速度方法

Linux/dev/shm目录不属于磁盘,而是内存,如果使用/dev/shm/目录作为Linux磁盘文件读写缓存,可想效率是非常惊人。 默认/dev/shm目录没有挂载,需要手动进行挂载。...在以下文件尾端添加以下内容: $ vim /etc/fstab tmps /dev/shm tmpfs defaults,size=1G 0 0 请根据自己物理内存大小添加,一般是物理内存10-50%...挂载/dev/shm/目录: $ mount -o remount /dev/shm/ $ mkdir /dev/shm/tmp $ chmod 755 /dev/shm/tmp $ mount -B.../dev/shm/tmp /tmp 注意: /dev/shm/tmp在系统重启后会丢失挂载,需要重新设置挂载,下面有个shell脚本,你加入开机自启即可: $ vim /etc/init.d/shmtmp.sh.../bin/bash mkdir /dev/shm/tmp chmod 755 /dev/shm/tmp mount -B /dev/shm/tmp/ /tmp 之后再以下文件末尾添加如下内容: $ vim

1.9K31

linux无文件执行— fexecve 揭秘

fexecve实现 今天不谈memfd_create,这是linux新特性,没有什么好玩,本人对fexecve 实现很有兴趣,因为fexecve是glibc函数,而不是linux系统调用。...0; } 代码主要是分为了三步: 首先通过shm_open函数在 /dev/shm创建了wurstverschwendung文件 将ls 命令文件写入到wurstverschwendung文件 通过...fexecve执行wurstverschwendung文件,因为/dev/shm在内存,因此fexecve实际上是在内存执行文件。...对fexecve_test.c 进行编译并执行,可以看到/dev/shm下面确实生成了wurstverschwendung文件。 ? 调试角度 fexecve是如何执行内存文件呢?...大家可以看到shmopen 其实是在/dev/shm创建文件,而execve执行文件为/proc/self/fd/3,为进程打开文件符号链接,这个指向就是shm_open创建文件,但是从监控execve

4.6K40

Linux进程间通信:共享内存 (下)

现在绝大多数Linux系统都有一个叫做/dev/shmtmpfs目录,就是这样一种存在。具体使用方法,大家可以参考我另一篇文章《Linux内存Cache真的能被回收么?》。...Linux提供POSIX共享内存,实际上就是在/dev/shm下创建一个文件,并将其mmap之后映射其内存地址即可。...-lrt racing_posix_shm.c 对于这个程序,我们需要解释以下几点: shm_openSHMPATH参数是一个路径,这个路径默认放在系统/dev/shm目录下。...这部分内容大家也可以参考《Linux内存Cache真的能被回收么?》。...上面说过,实际上POSIX共享内存就是在/dev/shm目录一个tmpfs格式文件,所以shm_open无非就是open系统调用封装,所以起函数使用参数几乎一样。

8.1K12

Linux 一键配置 Oracle 主机 devshm

首先可以看出来/dev/shm是一个设备文件, 可以把/dev/shm看作是系统内存入口, 可以把它看做是一块物理存储设备,一个tmp filesystem, 可以通过这个设备向内存读写文件, 以加快某些...Oracle 就利用了/dev/shm(shitou没用过oracle), 可以通过mount命令列出当前/dev/shm挂载文件系统, 你可以直接对/dev/shm进行读写操作, 例如: #touch.../dev/shm/file1 既然是基于内存文件系统,系统重启后/dev/shm文件就不存在了。...Linux默认(CentOS)/dev/shm分区大小是系统物理内存50%, 虽说使用/dev/shm对文件操作效率会高很多。...但是目前各发行软件却很少有使用它(除了前面提到Oracle), 可以通过ls /dev/shm查看下面是否有文件, 如果没有就说明当前系统并没有使用该设备。

88010
领券