Ядро Linux в комментариях


Request_module


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

    Выполнение функции exec_modprobe (строка ) в виде отдельного процесса в рамках ядра. Это нельзя сделать в виде простого вызова функции, поскольку exec_modprobe будет приводить к обращению к exec для программы. Следовательно, простой вызов exec_modprobe никогда не приведет к возврату. Вызов весьма похож на использование fork для подготовки exec, поэтому о kernel_thread можно думать как об облегченной версии fork для ядра, хотя kernel_thread имеет одно существенное отличие от fork, которое заключается в том, что процесс начинает выполнение с поименованной функции, а не с точки вызова. Как и в fork, возвращаемым значением kernel_thread является идентификатор (ID) нового процесса.

    Опять таки, как и в fork, отрицательное значение возвращаемое kernel_thread означает ошибку.

    Как гласит комментарий к функции, для текущего процесса временно блокируется большинство сигналов.

    Ожидание завершения exec_modprobe, которое покажет, как загрузился требуемый модуль — успешно или с ошибкой.

    Завершение, восстановление сигналов и печать сообщения об ошибке, если exec_modprobe возвратила код ошибки.




- Начало -  - Назад -  - Вперед -



Книжный магазин