![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
linux 设备驱动程序
believe麦迪
爱踢足球的程序员
展开
-
linux设备驱动:从如何定位oops的代码行谈驱动调试方法
在普通的c应用程序中,我们经常使用printf来输出信息,或者使用gdb来调试程序,那么驱动程序如何调试呢?我们知道在调试程序时经常遇到的问题就是野指针或者数组越界带来的问题,在应用程序中运行这种程序就会报segmentation fault的错误,而由于驱动程序的特殊性,出现此类情况后往往会直接造成系统宕机,并会抛出oops信息。那么我们如何来分析oops信息呢,甚至根据oops信息来定位具体的...转载 2018-03-12 00:14:32 · 628 阅读 · 0 评论 -
linux设备驱动:并发和竞态
综述 首先什么是并发与竟态呢?并发(concurrency)指的是多个执行单元同时、并行被执行。而并发的执行单元对共享资源(硬件资源和软件上的全局、静态变量)的访问则容易导致竞态(race conditions)。因此再设计自己的驱动程序时,第一个要记住的原则是,只要可能,避免资源的共享。这种思想最明显的应用就是避免使用全局变量。竞态通常作为可能导致并发和竟态的情况有: SMP(Symmet...原创 2018-03-20 23:28:02 · 313 阅读 · 0 评论 -
linux设备驱动—高级字符驱动(上)
在之前, 我们介绍了简单的字符设备驱动,实现了简单的open, close, read, write等驱动提供的基本功能。但是大部分驱动程序还会提供更多的功能。本章我们会介绍ioctrl 系统调用,和用户空间保持同步的几种途径。 一. Ioctl 1. 函数原型 调用 通过设备驱动程序执行各中类型的硬件控制。 用户空间,ioctl 系统调用 int ioctl(int f...原创 2018-04-27 15:55:42 · 203 阅读 · 0 评论