阅读:680回复:0
关于同步对象的几个问题,谢谢
我现在在做PCI设备的驱动。因为应用程序是多线程发送命令请求的,所以我在驱动中将它们排入队列。在STARTIO函数中分派它们到相应的串行化处理函数中去。选用芯片是PCI2040和C6201。
对于写数据的请求,直接把数据写到DSP的某个地址单元。这样有一个问题,对于串行化的请求,我应该在上一次请求数据已经被取走后,再往这个地址单元写,这就要用到同步对象和硬件查询。 现行的方案是,在写数据的串行化处理函数中,先pEvent.wait()进入等待,再启动定时器,在定时器的DPC中对该地址单元进行查询,如果已经被取走就取消掉定时器,将pEvent设置成信号态。函数继续执行数据的传送。 对于读数据的请求,先m_pEvent.wait()等待,DSP程序在输出数据准备好后,发中断给驱动,在ISR中m_pEvent置成信号态。函数继续执行数据的读取。 上面是我的思路,不知可行与否,请各位大师指点。初次编写驱动,感到还有好多东西要学的。我的问题是: 1 可以在设备驱动程序中使用同步对象么?找了好久,没找到相应的例子,有的也是在系统线程中运用的。 2 上述方案是否可行。如果不可行,能否指点一下。十分感谢。 |
|