Укладка модуля в драйверах устройств Linux

Попробовать sudo -i -u $user

gerald@book:~$ env |grep HOME
HOME=/home/gerald
gerald@book:~$ sudo -u ubuntu env |grep HOME
HOME=/home/gerald
gerald@book:~$ sudo -i -u ubuntu env |grep HOME
HOME=/home/ubuntu
5
10.01.2015, 03:17
2 ответа

Укладка просто означает, что некоторый модуль называет функции, определяемые в другом модуле. Существует пример прямо на странице, которую Вы цитируете. Согласно числу, lp драйвер для принтеров на параллельных портах. Это выполняет вызовы в универсальный драйвер параллельного порта parport. Существует несколько различных видов параллельных портов, и у каждого есть его собственный драйвер низкого уровня; наиболее распространенный parport_pc. На текущих ядрах это на самом деле parport_pc это призывает функции, определяемые parport, а не противоположное, поскольку число предлагает. Конечно, все они выполняют вызовы к функциям простого ядра (которые не находятся в модулях).

Существует много подобных случаев. Например, большая часть устройства хранения данных (диск), драйверы общаются с (вариант) протоколом SCSI, таким образом, они выполняют вызовы в дженерик scsi_mod модуль. usb_storage модуль выполняет вызовы в обоих sci_mod (для аспектов устройства хранения данных) и usbcore (для аспектов USB).

Вы видите зависимости для всех модулей, которые Вы установили (т.е. какие модули вызывают функции от какой другие модули) в /lib/modules/*/modules.dep (будут многие из них). Вы видите зависимости для модулей, которые в настоящее время загружаются lsmod; например, следующая выходная строка показывает это parport_pc, ppdev и lp все зависят от parport:

parport                27954  3 parport_pc,ppdev,lp

Вот маленький сценарий, который генерирует граф зависимостей для модулей, которые Вы загрузили. У Вас должен быть graphviz (доступный в большинстве дистрибутивов).

lsmod | awk '
    BEGIN {print "digraph modules {"}
    END {print "}"}
    NR != 1 {split($4, a, ","); for (i in a) print a[i], "->", $1;}
' | dot -Tpdf >lsmod.pdf
4
27.01.2020, 20:41
  • 1
    , который Вы упомянули о сценарии, какой язык сценариев - он? предложите. –  user6363 08.04.2011, 10:36
  • 2
    @user6363 Это - сценарий оболочки, большая часть из него (часть между '…') быть, очевидно, awk сценарием. –  Gilles 'SO- stop being evil' 08.04.2011, 22:19

Обычно существует набор функций, связанных с любым физическим устройством, взаимодействующим с компьютером. Например, функции, связанные с дисковыми накопителями, включают в себя файловые системы, шифрование, резервирование и другие. Одним из способов организации и обеспечения различных функциональных возможностей является стекирование .

Это общая карта ядра Linux, где можно заметить "стеки"/"функции" (по вертикали) и "слои" (по горизонтали):

enter image description here

Это немного более подробная версия предыдущей диаграммы:

enter image description here

Ниже приведены примеры стеков драйверов устройств в Linux:

I/O stack

Концептуально:

enter image description here

и более подробно:

enter image description here

Graphics stack

enter image description here

0
27.01.2020, 20:41

Теги

Похожие вопросы