Разработка ядра Linux
Шрифт:
Реализация тасклетов
Так как тасклеты реализованы на основе отложенных прерываний, они тоже являются отложенными прерываниями (softirq). Как уже рассказывалось, тасклеты представлены двумя типами отложенных прерываний:
Тасклеты представлены с помощью структуры
Поле
Поле
Поле
Запланированные (scheduled) на выполнение тасклеты (эквивалент сгенерированных отложенных прерываний) [39] хранятся в двух структурах, определенных для каждого процессора: структуре
39
Это еще один пример плохой терминологии. Почему отложенные прерывания (softirq) генерируются (rise), а тасклеты (tasklet) планируются (schedule)? Кто знает? Оба термина означают, что обработчики нижних половин помечаются как ожидающие на выполнение и в скором времени будут выполнены.
Тасклеты могут быть запланированы на выполнение с помощью функций
• Проверяется, не установлено ли поле
• Сохраняется состояние системы прерываний и запрещаются прерывания на локальном процессоре. Это гарантирует, что ничто на данном процессоре не будет мешать выполнению этого кода.
• Добавляется тасклет, который планируется на выполнение, в начало связанного списка структуры
• Генерируется отложенное прерывание с номером
• Устанавливается состояние системы прерываний в первоначальное значение и возвращается управление.
При первой же удобной возможности функция
• Запрещаются прерывания, и получается весь список
• Список текущего процессора очищается путем присваивания значения нуль указателю на него.
• Разрешаются прерывания (нет необходимости восстанавливать состояние системы прерываний в первоначальное значение, так как этот код может выполняться только в обработчике отложенного прерывания, который вызывается только при разрешенных прерываниях).
• Организовывается цикл по всем тасклетам в полученном списке.
• Если данная машина является многопроцессорной, то нужно проверить не выполняется ли текущий тасклет на другом процессоре, то есть проверить не установлен ли флаг
• Если тасклет не выполняется, то нужно установить флаг
Феномен
2. Уникум
Фантастика:
боевая фантастика
рейтинг книги
Князь Андер Арес 2
2. Андер Арес
Фантастика:
рпг
аниме
фэнтези
фантастика: прочее
рейтинг книги
Лекарь
1. Лекарь
Фантастика:
фэнтези
попаданцы
альтернативная история
рейтинг книги
Кодекс Охотника. Книга XXXV
35. Кодекс Охотника
Фантастика:
аниме
фэнтези
попаданцы
рейтинг книги
Инженер Петра Великого 2
2. Инженер Петра Великого
Фантастика:
попаданцы
альтернативная история
фэнтези
рейтинг книги
Имперец. Том 1 и Том 2
1. Имперец
Фантастика:
попаданцы
альтернативная история
аниме
рейтинг книги
Сильнейший Столп Империи. Книга 5
5. Сильнейший Столп Империи
Фантастика:
аниме
фэнтези
фантастика: прочее
попаданцы
рейтинг книги
Бродяга 3
3. Бродяга
Фантастика:
фэнтези
попаданцы
рейтинг книги
КАМЕРГЕРСКИЙ ПЕРЕУЛОК
Фантастика:
фэнтези
рейтинг книги