Я много работаю над этим, но не добился какого-либо прогресса.Как отправить динамические массивы copy_to_user в (Модуль ядра)
Я пытаюсь отправить динамический массив из ядра в пользовательское пространство. Кажется, что статические массивы легко отправляются в пользовательское пространство, но я получаю заполнение, что я не делаю ничего подходящего для динамического массива
Статические или фиксированные переменные, такие как int a, char b [100], отлично работают с put_user или copy_to_user. однако, когда я пытаюсь передать указатель, syscall убивается или имеет ошибку.
Можно ли отправлять динамические массивы с помощью copy_to_user? Я пытался решить это сам в течение нескольких недель, но я отчаянно нуждаюсь в помощи и смиренно прошу вашего руководства.
спасибо.
Спасибо за ответ, но я не понимаю memcpy [data.items, ...], где мы его используем и назначаем? –
@SunghoHong 'copy_to_user (& from-> items, ...)' эквивалентно 'memcpy (& data.items, ...)'. Надеюсь, что очевидно, почему второй ошибается, и по аналогии понимает, почему первое неправильно. – ephemient
Нет, нет необходимости в 'kmalloc' какой-либо дополнительной памяти в ядре. У вас уже есть массив 'items', вам просто нужно скопировать его в нужное место - вы сейчас скопируете его в неправильное место. – ephemient