我为CD设备开发了一个Linux块设备驱动程序。驱动程序运行良好但现在要求它应该在SMP系统上运行。当我在SMP系统上进行测试运行时,我发现驱动程序的性能会降低。与单核系统相比,DATA CD的比特率大幅下降。所以我理解我的驱动程序需要修改才能使SMP安全。
在我的驱动程序中,我使用过: 1.内核线程 2.互斥 3.信号量 4.完成
我的SMP系统是:ARM Cortex-A9双核600 MHz
有人可以告诉我在进行此移植时应该记住的所有因素吗?
答案 0 :(得分:1)
通常对于SMP系统,必须以这样一种方式处理共享资源(I / O资源)和全局变量,以便同时执行任务不得覆盖,为此损坏数据,您可以使用spin_locks,semaphores等来确保只有一个核心一次对该块/任务执行操作。这是逻辑实现,您可以识别设备驱动程序中的潜在风险区域,如ISR,读取和写入操作,并且必须识别设备驱动程序的多个入口点以及它们将要/将要的中心任务(在驱动程序中)去/去。