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