Как вернуть массив в C из ядра пользователю с помощью системного вызова - PullRequest
1 голос
/ 26 апреля 2011

Я уже сделал сложную часть добавления системного вызова к ядру Linux.Мне нужно вернуть следующий массив: unsigned int counts[4]
Я могу ссылаться на массив как curr-> count, но я не думаю, что для этого есть возвращаемое значение, и я думаю, что плохо указывать напространство ядра?
Вместо этого я думаю, что лучший способ - вернуть void и передать по параметру.Это путь?

Ответы [ 2 ]

2 голосов
/ 26 апреля 2011

См. Процедуру ядра copy_to_user (). Разработайте интерфейс системного вызова для передачи параметра, который является указателем, куда возвращать данные.

Вы пытаетесь сделать что-то вроде системных вызовов read() или gettimeofday(), верно? Все они возвращают более 32-битных результатов, используя copy_to_user().

1 голос
/ 26 апреля 2011

Я бы сказал, да - копирование данных в пользовательский буфер позволяет избежать всевозможных проблем.

...