Могу ли я использовать protobufs в ядре? - PullRequest
7 голосов
/ 06 мая 2011

Мне нужно определить протокол связи с драйвером устройства Linux. Protobufs выглядят очень красиво, и есть активный порт C .

Можно ли использовать protobufs в драйвере устройства Linux?
Очевидно, что код vanilla c не будет работать, поскольку он выполняет вызовы malloc и т. Д. Существует ли реализация protobufs, предназначенная для ядра?

Если есть решение для сброса, сколько усилий потребуется для переноса библиотеки C для использования в ядре?

Дополнительный вопрос: значительно ли отличаются ответы при написании с помощью драйверов Windows?

1 Ответ

7 голосов
/ 06 мая 2011

Теоретически, вы могли бы сделать это, но на самом деле в этом нет никакого смысла. Протокол Buffers был создан для облегчения задачи передачи данных между различными машинами и языками, которые используют разные представления для двоичных данных, но интерфейс между драйвером ядра и пространством пользователя находится на той же машине (и, как правило, на одном языке - библиотека языка C обычно используется на стороне пользователя, даже при написании кода приложения на другом языке).

Это означает, что проблема с другим представлением не возникает - вы можете просто определить struct s в заголовочных файлах и передать их через границу ядра / пространства пользователя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...