阅读:2082回复:4
有句语句不是很清楚,请高手指点
#define get_cpu_var(var) (*({ preempt_disable(); &__get_cpu_var(var); }))
就是这条语句,这么多层括号的含义是什么? |
|
沙发#
发布于:2007-05-22 12:06
preempt_disable():防止被其他task抢占任务
__get_cpu_var(): 或取当前正在被调度的cpu的私有数据。 cpu的私有数据是2.6内核才引入的。 |
|
|
板凳#
发布于:2007-05-30 11:07
preempt_disable():防止被其他task抢占任务
__get_cpu_var(var): 或取当前正在被调度的cpu的私有数据,看来是返回一个变量或结构变量。 & :取其地址 { preempt_disable(); &__get_cpu_var(var); } 加{},将其做为一个整体,和函数型语言相类,该语句"{}语句"返回最后计算的值。比如: b=0; b=({a=5;3;}); 则b=3,a=5 为什么加个(),因为b={}语法出错。 * :取值 |
|
地板#
发布于:2007-05-30 22:06
多谢赐教! 再问下2楼,你举的那个例子:
比如: b=0; b=({a=5;3;}); 则b=3,a=5 这是不是一个固定的格式算法吗? 函数型语言相类?什么意思? |
|
地下室#
发布于:2007-06-13 21:18
加{},是#define定义函数的一种写法,预防在编译时出现其他问题。例如该函数用在if中,如果没有{},这会把该函数分开了
|
|