Связь между потоками ядра в Linux - PullRequest
1 голос
/ 18 сентября 2009

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

Ответы [ 2 ]

2 голосов
/ 18 сентября 2009

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

1 голос
/ 19 октября 2009

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

...