Задержка шины PCIe при использовании ioctl против чтения? - PullRequest
0 голосов
/ 18 декабря 2018

У меня есть аппаратный клиент 1 , чья линия карт сбора данных, для которой я написал драйвер ядра Linux для Linux.

Карта может передавать только 1-4 байта ввремя, зависящее от того, как пользователь указывает использовать его, учитывая это, я использую ioctl для некоторых функций, но также использую структуру file_operations для обработкикарта как базовое символьное устройство, чтобы дать пользователю карты возможность просто использовать read или write, если они просто хотят простой однобайтовой связи с картой.

После обсуждения драйвера с клиентом один из их разработчиков понимает, что обработка карты как символьного устройства с использованием open/read/write приведет к задержке на шине PCI ,По сравнению с использованием open/ioctl.

Учитывая, что драйвер не делает различий в том, как он открывается, а функции ioctl и read/write вызывают один и тот же код, есть ли какое-либо обоснование для этой проблемы?

Если так, как быЯ проверяю задержку bus по коду моего драйвера?Существуют ли функции ядра, которые я могу вызвать для проверки этого?

Наконец, не будет ли мой тест шины действительным только для моих конкретных настроек (настройки ядра, платформа, синхронизация памяти, ЦП и т. Д.)?

1: у них есть только 2 других разработчика, ни один из которых никогда не использовал Linux

1 Ответ

0 голосов
/ 18 декабря 2018

Я подозреваю, что разработчик клиента немного смущен.Он думает, что различие между использованием read или write против ioctl соответствует типу операции, выполняемой на шине.Если вы объясните ему, что это всего лишь различие в программном API, и любая из опций выполняет точно такую ​​же операцию на шине, это должно их удовлетворить.

...