msm8994 热插拔sim卡导致modem重新启动的流程
作者:lover713814 发布于:2015-5-28 15:23
本文分析了msm8994 热插拔sim卡导致modem重新启动的流程,希望对大家有所帮助。Linux内核同步机制之(五):Read/Write spin lock
作者:linuxer 发布于:2015-5-22 18:38 分类:内核同步机制
在有了强大的spin lock之后,为何还会有rw spin lock呢?无他,仅仅是为了增加内核的并发,从而增加性能而已。spin lock严格的限制只有一个thread可以进入临界区,但是实际中,有些对共享资源的访问可以严格区分读和写的,这时候,其实多个读的thread进入 临界区是OK的,使用spin lock则限制一个读thread进入,从而导致性能的下降。
本文主要描述RW spin lock的工作原理及其实现。需要说明的是Linux内核同步机制之(四):spin lock是本文的基础,请先阅读该文档以便保证阅读的畅顺。
Linux时间子系统之(十四):tick broadcast framework
作者:linuxer 发布于:2015-5-21 19:26 分类:时间子系统
在内核中,有cpuidle framework可以控制cpu的节电:当没有进程调度到该cpu上执行的时候,swapper进程粉墨登场,将该cpu会被推入到idle状态。当然 CPU的idle状态有深有浅,当CPU睡的比较深入的时候,有可能会关闭本地的timer硬件。这样就会引入一个很有意思的问题:local timer将无法唤醒CPU,该cpu上的所有的software timer将无法唤醒cpu。tick broadcast framework就是用来解决这个问题的。
本文中的代码来自linux kernel 4.0。
Linux下“用户空间修改设备寄存器或者物理内存”的实现
作者:wowo 发布于:2015-5-15 11:21 分类:软件开发
底层开发过程中,经常需要在终端查看或者修改设备寄存器的值,busybox有一个工具----devmem,可用于读取或者修改物理寄存器的值,非常方便。
但它有一个不足的地方:不能连续操作物理内存(虽然这很危险,但在显示相关的调试中,如果能向指定的物理内存加载一个图片,或者dump指定物理内存的内容,还是很方便的),因此我重新写了一些代码,实现如下功能。
标签: devmem
关于内核中的乘法和除法。
作者:heziq 发布于:2015-5-6 22:02
前几天一直在看wowo的时间子系统,一直在思索mult和shift变量,为什么mult要尽量大,shift尽量小。这是由c语言的整数算术运算决定的。
cyn* mult > shift 在不考虑溢出的情况下,cyn * mult没有误差,右移shift有误差,损失小数。
但是如果cyn > shift * mult 在不考虑溢出的情况下,误差就会被放大。
10* 12 / 8 = 15
10 / 8 * 12 = 12
10 除以 8 = 1, 舍弃0.25 , 0.25 * 12 = 3. 可以看出乘法部分的误差被夸大12倍。
mult / shift 的比值越大越好,计算的值越精确。shift如果是1,就没有误差,如果shift是10,那么就只能精确到十位。
表达不好哈,不善于利用数学公式证明。我说的都是整数运算,不考虑浮点数。
总结两点:
内核中做运算
1,尽量做加减法,少做乘除法,尽量用移位做乘除法。这样运算速度快。
2,做乘除法的时候,先算乘法,最后做除法,乘法的时候注意溢出。
3,在特殊的情况下,被除数和除数的比值要尽量大,这样计算误差才会小。
功能
最新评论
文章分类
随机文章
文章存档
- 2024年2月(1)
- 2023年5月(1)
- 2022年10月(1)
- 2022年8月(1)
- 2022年6月(1)
- 2022年5月(1)
- 2022年4月(2)
- 2022年2月(2)
- 2021年12月(1)
- 2021年11月(5)
- 2021年7月(1)
- 2021年6月(1)
- 2021年5月(3)
- 2020年3月(3)
- 2020年2月(2)
- 2020年1月(3)
- 2019年12月(3)
- 2019年5月(4)
- 2019年3月(1)
- 2019年1月(3)
- 2018年12月(2)
- 2018年11月(1)
- 2018年10月(2)
- 2018年8月(1)
- 2018年6月(1)
- 2018年5月(1)
- 2018年4月(7)
- 2018年2月(4)
- 2018年1月(5)
- 2017年12月(2)
- 2017年11月(2)
- 2017年10月(1)
- 2017年9月(5)
- 2017年8月(4)
- 2017年7月(4)
- 2017年6月(3)
- 2017年5月(3)
- 2017年4月(1)
- 2017年3月(8)
- 2017年2月(6)
- 2017年1月(5)
- 2016年12月(6)
- 2016年11月(11)
- 2016年10月(9)
- 2016年9月(6)
- 2016年8月(9)
- 2016年7月(5)
- 2016年6月(8)
- 2016年5月(8)
- 2016年4月(7)
- 2016年3月(5)
- 2016年2月(5)
- 2016年1月(6)
- 2015年12月(6)
- 2015年11月(9)
- 2015年10月(9)
- 2015年9月(4)
- 2015年8月(3)
- 2015年7月(7)
- 2015年6月(3)
- 2015年5月(6)
- 2015年4月(9)
- 2015年3月(9)
- 2015年2月(6)
- 2015年1月(6)
- 2014年12月(17)
- 2014年11月(8)
- 2014年10月(9)
- 2014年9月(7)
- 2014年8月(12)
- 2014年7月(6)
- 2014年6月(6)
- 2014年5月(9)
- 2014年4月(9)
- 2014年3月(7)
- 2014年2月(3)
- 2014年1月(4)