| 
			 
					阅读:2220回复: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中,如果没有{},这会把该函数分开了				 
							 | 
	|