我已经为CD设备开发了一个Linux块设备驱动程序。该驱动程序工作正常,但现在要求它应在SMP系统上运行。当我在SMP系统上进行测试时,我发现驱动程序的性能有所下降。与单核系统相比,数据光盘的比特率下降了很多。因此,我知道我的驱动程序需要修改,以使其SMP安全。
在我的驱动中,我使用了: 1.内核线程2.互斥锁3.信号量4.完成
我的SMP系统是: ARM Cortex-A9双核600 MHz
有人能告诉我在做这个移植时我应该记住什么因素吗?
发布于 2017-05-03 16:00:38
通常,对于SMP系统,共享资源(I/O资源)和全局变量必须以这样的方式处理,即同时执行任务时不能覆盖、损坏数据。为此,您可以使用spin_locks、信号量等来确保一次只有一个内核在该块/任务上执行操作。这是逻辑实现,你必须识别设备驱动程序中的潜在风险区域,如ISR,读写操作,并必须识别设备驱动程序的多个入口点和它们正在/将要走向的中央任务(在驱动程序中)。
https://stackoverflow.com/questions/9325685
复制相似问题