Вопрос

Я портирую приложение / драйвер PCI с vxWorks на Linux, и я хотел бы сохранить ту же архитектуру, если это возможно. Текущий драйвер имеет 2 задачи (потоки), которые взаимодействуют друг с другом с помощью очередей сообщений. Есть ли механизм для связи между потоками ядра? Очереди сообщений используются для передачи адресов буфера и информации о размере, поэтому задачи могут использовать DMA для перемещения больших объемов данных.

Это было полезно?

Решение

Я бы настоятельно рекомендовал не использовать архитектуру VxWorks в Linux. Распространение потоков ядра не одобряется, ваш код никогда не превратится в официальное дерево ядра. Даже если вас это не волнует, вы на 100% уверены, что хотите разработать драйвер нестандартным способом? Все было бы намного проще, если бы вы просто избавились от этих двух задач. Кстати, с какой стати для начала вам нужны задачи для драйвера PCI?

Другие советы

Похоже, что интерфейс workqueue может быть тем, что вам нужно, или для чего-то более легкого, kfifo в сочетании с rwsem семафор.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top