LINUX.ORG.RU

Передача параметров в модуль ядра

 


0

2

Здравствуйте,
Есть модуль: https://github.com/ichensky/usbkill (usbkill.c)
в который, при загрузки в ядро, надо передавать несколько массивов параметров, один параметр равен нескольким интовым значениям
Как лучше всего реализовать передачу параметров в модуль, что бы это было удобно читать/править, как-то так, напр.:

insmod usbkill.ko \
      "((white_add (0x0001 0x0002) 
                   (0x0003 0x0004)) 
        (white_remove (0x1000 0x2000) 
                      (0x3000 0x4000)))"

Исходя из этого мануала: http://tldp.org/LDP/lkmpg/2.6/html/x323.html в insmod можно передавать только переменные и массивы. Значит ли это, что для чего-то более сложного чем массив значений надо передавать данные как строку, а потом делать свой десерилизатор? Есть какие-то лучшие практики?

Лиспер? :)
может так удобнее задавать и парсить будет?

insmod usbkill.ko "+0x0001:0x0002,+0x0003:0x0004,-0x1000:0x2000,-0x3000:0x4000"


по теме: да, передавай строку и парсь

metawishmaster ★★★★ ()

Ну можно еще насчет /proc или /sys подумать, вроде

modprobe usbkill
echo "0x0001 0x0002" > /proc/usbkill/white_add
echo "0x0003 0x0004" > /proc/usbkill/white_add
echo "0x0001 0x0002" > /proc/usbkill/white_remove
echo "0x0003 0x0004" > /proc/usbkill/white_remove
alx777 ()

procfs позволяет передавать до 4кб. только придумай очень уникальное имя - в procfs есть дыра если у двух файлов совпадают имена.

ckotinko ☆☆☆ ()
Ответ на: комментарий от ckotinko

procfs позволяет передавать до 4кб.

«As we noted above, the implementation of large files under /proc is a little awkward. Over time, /proc methods have become notorious for buggy implementations when the amount of output grows large. As a way of cleaning up the /proc code and making life easier for kernel programmers, the seq_file interface was added. This interface provides a simple set of functions for the implementation of large kernel virtual files.»

Linux Device Drivers, Third Edition

alx777 ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.