我的PCI driver在单CPU的机子运行良好,但是在双CPU上运行有问题,死机或重起!这是为什么呢?按理说单CPU版的driver在双CPU下应该能运行的呀!
回复(6) 2003-05-23 10:19 来自版块 - 内核编程
表情
yunyanrong你用的是DriverWorks么? DriverWorks的默认工程中,好像已经设置为只让第一个CPU响应中断了。联系一下吧,QQ:22708952。(2003-06-17 19:45)
robin_wxg加一些KeAcquireSpinLock()的保护。(2003-06-06 08:50)
yjhleaf其实你用系统排队的话,它只是在系统调用队列中用自旋锁保护了而已,在队列外面的话,你得自己加锁保护了。譬如你对一个端口进行读和写,第一个线程可能是CPU1在执行端口写,而同时第二个线程是CPU2在执行端口 读,这就会发生冲突了。(2003-06-05 20:45)
edriver在我的driver可没有用多线程呀,在本论坛看了看这方面的例子,都说是因为spinlock引起的,主要是在调用startio函数,因为在调用该函数的时候,其内部会使用spinlock的,那各位老大,会不会是这个原因呢?(2003-05-23 14:42)
AllenZhedriver兄说得没错,你一定是没有考虑周全,导致数据或其它资源的不完整,或者说被破坏,不应该写具有线程相关的代码,多使用Event、Mutex等(2003-05-23 14:19)
arthurtu双CPU可是可以真正的多线程了,没有考虑周全吧?(2003-05-23 10:26)

返回顶部