Грубо говоря, я пытаюсь выпустить вызов IOCTL из пространства ядра, не посещая пространство пользователя. (Все ответы, которые я нашел в SO, предлагают пройти через пространство пользователя).IOCTL из пространства ядра
В частности, я пытаюсь заполнить пул энтропии (/dev/random
) из пространства ядра (используя модуль ядра). [Я знаю, что это опасно;]]. Заполнение пула энтропии из пользовательского пространства выполняется с использованием IOCTL, например, rngaddentropy. Есть ли способ сделать то же самое из пространства ядра?
Спасибо за ответы. Из любопытства: Что произойдет, если «/ dev/random» под другим именем? Есть ли способ обойти вызов ioctl и добавить данные в энтропийный пул? Я проверил 'random.c', но функция' write_pool' не экспортируется. – insumity
Есть некоторые экспортированные функции из этого файла, такие как [add_device_randomness] (http://lxr.free-electrons.com/source/drivers/char/random.c#L759). Вероятно, вы найдете некоторые из них полезными для ваших целей. Что касается 'write_pool', это называется косвенно при вводе в файл. – Tsyvarev