[问题] readb/readw/readl/readq

楼主: loach98 (银货两讫)   2016-07-11 21:12:55
开发平台(Platform): (Ex: VC++, GCC, Linux, ...)
Linux 3.4 @ Cortex-A9/A17
额外使用到的函数库(Library Used): (Ex: OpenGL, ...)
X
问题(Question):
trace linux-3.4/arch/arm/include/asm/io.h时候,
看到关于readl的描述:
#define readl(c) ({ u32 __v = readl_relaxed(c); __iormb(); __v; })
想请教这段语法的意思? (已知iormb是barrier, 可以略过)
看起来是先宣告__v, 让它去接readl_relaxed(c)的return值,
接着卡一个barrier, 确保read的动作有完成,
但是不太懂为何最后还有一个"__v;", 想请教它的意思是?
附注real_relaxed(c)也用了类似的定义手法
#define readl_relaxed(c) ({ u32 __v = \
le32_to_cpu((__force __le32)__raw_readl(c)); __v; })
补充说明(Supplement):
恳请大大赐教...
补充:
C板有大大帮回答了
https://www.ptt.cc/bbs/C_and_CPP/M.1468242743.A.CCB.html

Links booklink

Contact Us: admin [ a t ] ucptt.com