留言板

路过的蜗牛们,在这里留个脚印吧~

蜗窝欢迎各种言论,谈天说地、技术交流、问题求救、跳槽招聘、牢骚抱怨……哈哈。

评论:

tuonioo
2017-04-26 16:52
hi,大神你好, 最近在看 内存屏障的问题。有个问题想请教一下。
    在我的理解 多数用户态软件开发设计多数情况不需要考虑memory barrier的问题。因为共享/临界资源的保护已经在多线/进程 设计时候(采用locker 之类的) 消除了cpu cashe 不同步问题。 但是在想用无锁算法的时候, 比如用__sync_add__fetch 系列函数就需要考虑memory barrier. 这个理解正确吗?
    另外查了很多文档 关于__sync_synchronize。 但是 讲解都比较模糊, 说__sync_synchronize 其实就是内核的mfence(). 可是我的理解 __sync_synchronize()针对的应该是 gcc 编译器以及cpu 而mfence 就只是针对cpu吧?
linuxer
约 21 小时前
@tuonioo:在我的理解 多数用户态软件开发设计多数情况不需要考虑memory barrier的问题。因为共享/临界资源的保护已经在多线/进程 设计时候(采用locker 之类的) 消除了cpu cashe 不同步问题。 但是在想用无锁算法的时候, 比如用__sync_add__fetch 系列函数就需要考虑memory barrier. 这个理解正确吗?
-------------
同意你的观点。Linux内核中提供的同步原语都隐含了memory barrier的功能。

另外查了很多文档 关于__sync_synchronize。 但是 讲解都比较模糊, 说__sync_synchronize 其实就是内核的mfence(). 可是我的理解 __sync_synchronize()针对的应该是 gcc 编译器以及cpu 而mfence 就只是针对cpu吧?
-------------
__sync_synchronize是full memory barrier,其实说memory barrier的时候其实就是针对CPU而言的,阻止编译器重排指令的叫做optimizer barrier。
tuonioo
约 3 小时前
@linuxer:谢谢 linuxer 大神,
   __sync_synchronize是full memory barrier,其实说memory barrier的时候其实就是针对CPU而言的,阻止编译器重排指令的叫做optimizer barrier。
    所以 也就是说 __sync_synchronize 并不们祈祷 optimizer barrier的效果, 仅仅是一个 full mb。
Jay
2017-03-27 20:43
请教个armv8相关的问题,core实现了EL3/EL2,那么启动的时候core在EL3,这个时候的代码执行也是在EL3,那么boot代码把bootloader(uboot)load进来后,这个时候需要切换EL吗?如果不切,那么uboot同样也是执行在EL3,uboot加载kernel,(kernel 一般都是在EL1运行),那么uboot就需要切换到EL1去吗?
linuxer
2017-03-28 11:43
@Jay:http://www.wowotech.net/armv8a_arch/arm64_initialize_1.html
上面这篇文章可以回答你的疑问。
Jay
2017-03-31 18:05
@linuxer:谢谢 linuxer
foolishungry
2017-03-22 20:27
wowo你好!目前在做一个项目,想要利用BLE设备的RSSI来检测周边的处于ISM频段的无线信号状态(类似于http://www.sharebrained.com/2011/05/24/ubertooth-spectrum-analysis-fun/)

但是发现普通的BLE设备读取RSSI时,要么是通过Advertising PDU得到advertising channel的RSSI,要么是建立连接后监测该连接的RSSI。我想要实现的是持续扫描BLE各个channel的RSSI,不知道这在一般的BLE设备上能不能实现?

在CC2540手册上看到了direct test mode,其中的HCI_EXT_ModemTestRxCmd似乎可行。但不知道一般的设备(如android手机)能否实现这样的对各个channel的RSSI持续采样?

最后,感谢wowo!在这里学到了很多!
wowo
2017-03-23 10:58
@foolishungry:其实从协议的角度看,需要尽量封装以屏蔽技术细节,以BLE协议为例:经过物理层的封装,在链路层就已经不再有物理channel的概念了。这样对产业化应用来说,当然是非常好的。
不过,来看你的需求,你需要每一个channel(我就当作物理通道了)的RSSI,显然,这与协议封装、抽象的天性是相悖的。
因此,不要指望能从成熟的、产业化的解决方案中找到答案!
你的需求,随便用一个2.4GHz的tranceiver都能搞定(想利用现有的手机等蓝牙功能,就不太可能了)。
alibaba
2017-01-23 16:22
希望蜗窝的大牛能介绍一点跳过文件系统操作块设备的文章,网上找了一下资源太少了,
wowo
2017-01-25 09:04
@alibaba:跳过文件系统?直接操作/dev/中的设备节点吗?不知道你要了解什么,没有资源,去kernel看看代码就行了:-)
helloworld
2017-01-20 13:36
</div></span>helloworld><script>ce测试
helloworld
2017-01-20 13:35
</div>helloworld><script>ce测试
WL
2017-01-03 23:35
刚路过,看了一些文章,感觉到博主的情怀和坚持,确实难能可贵,本人也是在linux上摸爬滚打8年的工程师,目前正在从事linux驱动工作,很希望能够参与到一个为技术和产品奋斗的组织,望有机会可以拜见下!
wowo
2017-01-04 14:02
@WL:多谢关注及支持~~有机会的话大家可以聚聚,聊聊天,吹吹牛,呵呵。
madang
2016-12-23 13:45
问个中断的问题,当代码运行在cpu A上时候,如何查看cpu B
的中断是否打开?

我知道查看本核的是irq_disabled()
wowo
2017-01-04 09:18
@madang:kernel应该没有这样的接口。因为A为什么要关心B的中断使能状态呢?和它完全没有关系啊。
lolo84
2016-12-14 16:12
有没有浅显易懂的makefile 的书写文档,貌似初学者比较懵
wowo
2016-12-14 16:42
@lolo84:说实话,关于Makefile,我一直有类似的困惑,一直……
个人意见,不要试图去看什么一劳永逸的书(太琐碎,记不着),比较有效的方法是实践:
1. 手头上有很多开源软件的Makefile,用尽一些方法把它们看懂(google等)。
2. 动手写,例如我们的x project,用Makefile将各个软件包串起来。
用的多了,自然熟能生巧。不过到最后很有可能还是记不全,不过又有什么关系呢?用到的时候去查一下就行了。
yoyoriten
2016-12-14 11:27
请问下有人了解过linux下的上行组包吗?有人了解这个原理吗?现在linux内核代码中具体是怎么实现的呢?谢谢!
wowo
2016-12-14 16:01
@yoyoriten:上行组包是个什么概念?兄台的问题有点过于简洁了,呵呵

发表评论:

Copyright @ 2013-2015 蜗窝科技 All rights reserved. Powered by emlog