SMP系统的Linux设备驱动程序

发布于 2025-01-07 06:20:44 字数 270 浏览 1 评论 0原文

我为CD设备开发了一个Linux块设备驱动程序。该驱动程序运行良好,但现在要求它应在 SMP 系统上运行。当我在SMP系统上进行测试运行时,我发现驱动程序的性能下降了。与单核系统相比,DATA CD 的比特率大幅下降。所以我知道我的驱动程序需要修改以使其 SMP 安全。

在我的驱动程序中,我使用了: 1. 内核线程 2. 互斥体 3. 信号量 4. 完成

我的 SMP 系统是:ARM Cortex-A9 双核 600 MHz

有人可以告诉我在进行此移植时应该记住哪些因素吗?

I have developed a Linux block device driver for CD device. The driver is working well but now there is a requirement that it should run on a SMP system. When I did a test run on the SMP system, I found the performance of the driver to degrade. The Bit rate for DATA CD has gone down tremendously as compared to single core system. So I understand that my driver needs to be modified to make it SMP safe.

In my driver , I have used :
1. Kernel threads
2. Mutex
3. Semaphore
4. Completions

My SMP system is : ARM Cortex-A9 Dual Core 600 MHz

Can some one please tell me what all factors that I should keep in mind while doing this porting?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

仅此而已 2025-01-14 06:20:44

通常,对于 SMP 系统,共享资源(I/O 资源)和全局变量必须以这样一种方式处理:同时执行任务不得覆盖、损坏数据,为此您可以使用 spin_locks、信号量等来确保只有一个核心将一次对该块/任务执行操作。这是逻辑实现,您必须识别设备驱动程序中的潜在风险区域,例如 ISR、读取和写入操作,并且必须识别设备驱动程序的多个入口点以及它们正在/将要执行的中心任务(在驱动程序中)去。

Normally for SMP systems the shared resources (I/O resources) and global variables must be handled in such a way that simultaneous execution of a task must not overwrite, corrupt the data for this you can use spin_locks, semaphores etc to ensure that only one core will perform operation on that block/task at a time. This is logical implementation you've to identify the potential risky areas in device driver like ISR, read and write operations and have to identify the multiple entry points of your device driver and central task (in driver) toward which they are/will going/go.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文