Как использовать карту в ядре Linux для хранения значения ключа? - PullRequest
0 голосов
/ 29 апреля 2018

Я пытаюсь реализовать хранилище значений ключей в ядре Linux с хэш-таблицей. Кто-нибудь может указать подходящий пример с использованием карт?

Я получу ключ из пространства пользователя и хочу прочитать / записать / обновить значение в пространстве ядра.
Есть ли какой-нибудь механизм защиты для того же, что и у нас для хэша как hash_add_rcu?

1 Ответ

0 голосов
/ 29 апреля 2018

Основной ответ - хеш-таблица - карта . Причина того, что в ядре нет абстракции к API типа «карта», заключается в том, что вы отвечаете за все в ядре. Мало того, то, как хеш-карты реализованы в ядре, позволяет одной записи (значению) быть частью нескольких карт, переплетать множество косвенных адресов и создавать произвольные реляционные записи.

Безопасность - еще одна проблема. В большинстве случаев, когда вы получаете какие-либо данные из пользовательского пространства, вы должны обращаться с ними как с мусором: в частности, вы не можете доверять пользовательскому пространству предоставление вам действительных ключей и использовать их напрямую, например, для поиска по карте. У вас должен быть непрозрачный механизм для проверки правильности ключа (например, размера) перед чтением / записью / обновлением значений.

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