Linux中断 1.申请和释放中断 申请中断 int request_irq(unsigned int irq, irq_handler_t handler, unsigned long irqflags, const char *devname, void *dev_id) irq 是要申请的硬件 ...
分类:
系统相关 时间:
2016-05-01 12:22:45
阅读次数:
307
这节,我们继续上,中(以前的日志有)篇目进行分析,结合一个真实的驱动案例来描述linux内核中驱动的中断机制,首先我们先了解一下linux内核中提供的中断接口。
这个接口我们需要包含一个头文件:#include
在中断接口中,最重要的是以下的接口函数:
1、这个是请求中断函数
int request_irq(unsigned int irq, irq_handler_...
分类:
系统相关 时间:
2016-04-29 20:09:48
阅读次数:
255
原作者:Eli Bendersky
http://eli.thegreenplace.net/2016/c11-threads-affinity-and-hyperthreading/
背景与简介
多年来,C与C++标准将多线程及并发处理排斥在外——在“目标机器依赖”世界的阴影之中,以“抽象机器”为目标的标准不包括它。在堆积如山,涉及并发的邮件列表及新闻组提问中,直接而冷血的“C++不知道线...
分类:
编程语言 时间:
2016-04-29 15:13:26
阅读次数:
291
FLYme 3.73A Mx3 (3.4.43-user-g66efe75 #2 SMP PREEMPT Tue Sep 9 11:16:30 CST 2014 armv7l GNU/Linux) YOS 4.5.7Y Mx4 (3.10.61 #1 SMP PREEMPT Tue Oct 20 1 ...
分类:
其他好文 时间:
2016-04-28 22:38:09
阅读次数:
358
这节,我们继续上,中(以前的日志有)篇目进行分析,结合一个真实的驱动案例来描述linux内核中驱动的中断机制,首先我们先了解一下linux内核中提供的中断接口。
这个接口我们需要包含一个头文件:#include
在中断接口中,最重要的是以下的接口函数:
1、这个是请求中断函数
int request_irq(unsigned int irq, irq_handler_...
分类:
系统相关 时间:
2016-04-26 22:01:41
阅读次数:
319
一、注册一个硬件中断服务函数irq_handler,作为硬件中断产生后,实际中断服务函数的总入口。 二、中断服务函数irq_handler入口,根据不同的条件调用不同分支 三、定义一个全局的函数指针,作为“Interrupt Virtual Service Routine”,通过注册函数,在不同阶段 ...
分类:
其他好文 时间:
2016-04-26 19:04:08
阅读次数:
205
1.并发是指多个执行单元同时、并行的执行。并发的执行单元对共享资源的访问很容易导致竞态。 在 Linux 内核中,主要的竞态发生于如下几种情况: ①对称多处理器(SMP)的多个 CPU ②单CPU内进程与抢占它的进程 ③中断(硬中断、软中断、Tasklet、底半部)与进程之间 2.解决竞态的方法 ① ...
分类:
系统相关 时间:
2016-04-26 12:21:18
阅读次数:
213
一、概述: 自旋锁是SMP架构中的一种low-level的同步机制。当线程A想要获取一把自旋锁而该锁又被其它线程锁持有时,线程A会在一个循环中自旋以检测锁是不是已经可用了。对于自选锁需要注意: 由于自旋时不释放CPU,因而持有自旋锁的线程应该尽快释放自旋锁,否则等待该自旋锁的线程会一直在那里自旋,这 ...
分类:
系统相关 时间:
2016-04-20 17:38:00
阅读次数:
215
查看nginx编译时参数的设定 使用nginx -V命令查看 可以使用nginx -h命令查看命令帮助 配置文件中将worker process绑定到cpu的特定内核上, vim /etc/nginx/nginx.conf 注意worker_cpu_affinity这个参数是对cpu多核的支持,上面 ...
分类:
其他好文 时间:
2016-04-20 17:35:20
阅读次数:
176
这里先简要说一下在不同的工作模式下有何区别:比如当一个程序运行在不同的模式下面的时候,能够运行的ARM处理器的指令是不一样的,能够访问的ARM处理器的寄存器都是不一样的!
User: 普通用户模式
FIQ: 快速中断模式
IRQ: 普通中断模式
Supervisor:保护模式(权限相对比较高)
Abort:异常模式 (比如程序访问出现异常)
Undefined:未定义模式(比如使用了一条未定义的汇编指令)
System:系统模式(在ARMV4以上才有的模式, 用的很少)
对于Linux而言,一般的应用程序...
分类:
其他好文 时间:
2016-04-17 22:45:23
阅读次数:
177