码迷,mamicode.com
首页 >  
搜索关键字:驱动程序    ( 3286个结果
Linux设备驱动程序 之 休眠
当一个进程被置入休眠时,它会被标记为一种特殊状态,并从调度器的运行队列中移走;直到某些情况下修改了这个状态,进程才会在任意cpu上调度,即运行该进程;休眠中的进程会被搁置在一边,等待将来的某个时间发生; 为了将进程以一种安全方式进入休眠,需要牢记下面的规则: 第一条规则,永远不要在原子上下文中进入休 ...
分类:系统相关   时间:2019-10-29 19:59:45    阅读次数:159
Linux设备驱动程序 之 顺序锁
当要保护的资源很小,很简单,会频繁的被访问而且写入访问很少的且必须快速时(即读不允许让写饥饿),就可以使用顺序锁(seqlock);从本质上讲,顺序锁会允许读取者对资源的自由访问,但需要读取者检查是否和写入者发生冲突,当这种冲突发生时,就需要重试对资源的访问; 顺序锁通常不能用于保护包含指针的数据结 ...
分类:系统相关   时间:2019-10-29 19:56:42    阅读次数:105
Linux设备驱动程序 之 延迟执行
有些驱动程序需要延迟比较长的时间,即长于一个时钟滴答; 如果想把执行延迟若干个时钟滴答,或者对延迟的精度要求不高,最简单的实现方法就是一个监视jiffies计数器的循环;这种忙等待的实现方法通常具有下面形式,其中j1是延迟终止的jiffies值: 对cpu_relax的调用将以架构相关的方式执行,其 ...
分类:系统相关   时间:2019-10-29 19:51:47    阅读次数:90
Linux设备驱动程序 之 kmalloc
kmalloc的原型如下: 1 void *kmalloc(size_t size, gfp_t flags) 第一个参数是要分配的块的大小,第二个参数是分片标志; flags标志 最常用的标志是GFP_KERNEL,表示内存分配(最终总是调用get_free_page来实现实际的分配,这就是GFP ...
分类:系统相关   时间:2019-10-29 19:51:31    阅读次数:122
Linux设备驱动程序 之 异步通知
尽管大多数时候阻塞型和非阻塞型操作的组合以及select方法可以有效的查询设备,但是某些时候用这种技术处理就效率不搞了; 例如:一个进程在低优先级执行长的循环计算,但又需要尽可能快的处理输入数据,如果该进程正在响应来自数据收集外设新观测的数据,则应该在新数据可用时理解知晓并处理;我们可以使用poll ...
分类:系统相关   时间:2019-10-29 19:51:17    阅读次数:106
Linux设备驱动程序 之 原子操作
当共享资源是一个简单的整数值时,可以使用内核提供的一种原子的整数类型,称为atomic_t,定义在<linux/types.h>中,操作定义在<linux/atomic.h>中; 内核提供了一组针对原子位进行操作的函数,它们与体系结构相关,定义在文件<asm/bitops.h>;即使是在SMP计算机 ...
分类:系统相关   时间:2019-10-29 19:48:41    阅读次数:97
Linux设备驱动程序 之 ioctl
除了读取和写入设备之外,大部分驱动程序还需要另外一种能力,即通过设备驱动程序执行各种类型的硬件控制,通常这种需求使用ioctl方法支持,该方法实现了同名的系统调用; 在用户空间,ioctl系统调用的原型如下: 原型中的可变参数不是数目不定的一串参数,而只是一个可选参数;可选参数的具体格式依赖于控制命 ...
分类:系统相关   时间:2019-10-29 19:38:48    阅读次数:120
Linux设备驱动程序 之 度量时间差
内核通过定时器中断来跟踪事件流; 时钟中断由系统定时硬件以及周期性的间隔产生,这个间隔由内核根据HZ的值设定,HZ是一个细节结构有关的常数;作为一般性规则,即使知道对应平台上的确切HZ值,也不应该在编程时依赖该HZ值; 如果想改变系统时钟中断发生的频率,可以通过修改HZ值来进行,但是,如果修改了头文 ...
分类:系统相关   时间:2019-10-29 19:35:24    阅读次数:119
Linux设备驱动程序 之 内核定时器
如果需要在将来的某个时间点调度执行某个动作,同时在该时间点到达之前不会阻塞当前进程,则可以使用内核定时器; 内核定时器是一个数据结构,它告诉内核在用户定义的时间点使用用户定义的参数来执行一个用户定义的函数; 被调度运行的函数几乎肯定不会再注册这些函数的进程正在执行时运行,相反,这些函数会异步的运行; ...
分类:系统相关   时间:2019-10-29 19:31:14    阅读次数:100
JDBC使用SPI机制解析
SPI机制为很多框架的扩展提供了可能,其实JDBC就应用到了这一机制。回忆一下JDBC获取数据库连接的过程。在早期版本中,需要先设置数据库驱动的连接,再通过DriverManager.getConnection获取一个Connection。 String url = "jdbc:mysql:///c ...
分类:数据库   时间:2019-10-29 19:25:12    阅读次数:172
3286条   上一页 1 ... 27 28 29 30 31 ... 329 下一页
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!