0

一个硬件有一个单字节的状态寄存器。寄存器的 LSB 是一个“忙”位。在写入设备中的任何寄存器之前,驱动程序必须等待该位清除。考虑以下代码:

char p = remap(MEM_PCI, REG_BASE_ADDRESS, REG_SIZE); 
while (*p & 1);
/ write to hardware */ 

代码不起作用。驱动程序经常挂起等待硬件“准备好”。请列出可能发生这种情况的原因。

4

0 回答 0