Большой поток данных между пользователем и ядром - PullRequest
4 голосов
/ 07 октября 2011

Каков наилучший способ (производительность) обеспечить двунаправленный поток данных между уровнем пользователя и уровнем ядра?

Я понимаю, что вы можете открыть сокет NETLINK и перенести туда данные. Но мы должны принять некоторые другие взаимодействия между пользователем и ядром (системные вызовы, ioctl) для передачи управляющей информации. Является ли это наиболее эффективным способом передачи большого объема данных через границу пользовательского ядра?

1 Ответ

4 голосов
/ 07 октября 2011

Передача больших буферов данных в драйвер / поток ядра / что угодно - нет проблем - ядро ​​имеет привилегию для чтения, нет проблем. Для возврата материала обычно используется ядро ​​с достаточно большим буфером пользовательского пространства или буферным пулом, чтобы оно могло возвращать данные. Вот как это делается для обычных вещей - чтения / записи файла / сети, для пример.

В чем проблема, точнее - вам нужно перенести данные на уровень ядра или с него на другой компьютер?

Rgds, Martin

...