|
在skyeye1.2.9源码的文件skyeye_mach_s3c2410x.c中,有函数:
static void s3c2410x_io_write_word (ARMul_State * state, ARMword addr, ARMword data)
{
//传递的参数state第一次被使用
if ((addr >= UART_CTL_BASE0)
&& (addr < UART_CTL_BASE0 + UART_CTL_SIZE)) {
s3c2410x_uart_write (state, (addr - UART_CTL_BASE0) % 0x4000,
data, (addr - UART_CTL_BASE0) / 0x4000);
return;
}
。。。。。。
switch (addr) {
case SRCPND:
io.srcpnd &= (~data & INT_MASK_INIT);
//2006-04-04 chy, for eCos on s3c2410. SRCPND will change the INTPND, INTOFFSET, so when write SRCPND, the interrupt should be update
extern ARMul_State * state;
s3c2410x_update_int (state); (这个state是参数传递的state吗?)
break;
case INTMOD:
。。。。。。
}
----------------------------------------------------
阅读该函数存在个疑问:
根据红色字体标注,s3c2410x_update_int (state);中调用的state变量是Arm_arch_interface.c中定义的全局变量(ARMul_State *state;)还是函数s3c2410x_io_write_word传递进来的参数state呢?
觉得这种编程方式很奇怪。想在VC6.0下做个试验,发现VC并不支持这种编程方式。
请达人指教!谢谢!
[ 本帖最后由 knpingan 于 2009-12-3 21:11 编辑 ] |
|