[問題] 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