Разработка ядра Linux
Шрифт:
Для объединения двух не перекрывающихся списков и повторной инициализации старого головного элемента служит следующая функция.
Эта функция аналогична функции
Если вам уже доступны указатели
Перемещение по связанным спискам
Теперь мы уже знаем, как объявлять, инициализировать и работать со связанными списками в ядре. Это все хорошо, но не имеет никакого смысла, если нет возможности работать С данными, которые хранятся в списках! Связанный список — это просто контейнер, в котором хранятся важные данные. Необходимо иметь способ перемещения по списку и доступа к данным. К счастью, ядро предоставляет набор полезных интерфейсов для перемещения по связанным спискам и обращения к структурам данных, которые хранятся в этих списках.
Обратите внимание, что, в отличие от подпрограмм управления списками, операции перебора элементов списка из
Наиболее простой способ выполнять итерации по элементам связанного списка — это использовать макрос
Это пока все еще бесполезно! Указатель на структуру узла списка — это не то, что нам нужно. Нам нужен указатель на структуру данных, в которой содержится структура узла. В показанном ранее примере структуры данных
Макрос
Кроме этого, макрос
Если необходимо выполнить прохождение по спискам в обратном порядке, то следует использовать макрос
Обратите внимание, что при прохождении связанного списка ничто не мешает удалять элементы из этого списка. Обычно, чтобы предотвратить конкурентный доступ, следует использовать блокировки. Макрос
Обратите внимание, что этот макрос защищен только от операций удаления узлов списка. Для защиты отдельных элементов списка от конкурентного доступа необходимо использовать блокировки.
Приложение Б
Генератор случайных чисел ядра
В ядре Linux реализован генератор случайных чисел, который теоретически может генерировать истинно случайные числа. Генератор случайных чисел собирает в пул энтропии шумы внешней среды, которые поступают из драйверов устройств. Этот пул доступен как в ядре, так и для пользовательских процессов в качестве источника данных, которые не только случайны внутри системы, но и недетерминированы для внешних источников атак. Такие случайные числа используются различными внешними приложениями, особенно для целей криптографии.
Истинно случайные числа отличаются от псевдослучайных чисел, которые генерируются библиотечными функциями языка С. Псевдослучайные числа создаются с помощью детерминированных функций. Хотя такие функции и могут генерировать последовательности чисел, которые обладают некоторыми свойствами истинно случайных чисел, тем не менее такие числа только статистически случайны. Псевдослучайные числа являются детерминированными, потому что если известно хотя бы одно число последовательности, то можно определить и все остальные. Если известно так называемое порождающее число последовательности (seed), то обычно по нему определяется и вся последовательность. Для приложений, которые требуют истинно случайных чисел, как, например, криптография, псевдослучайные числа обычно не подходят.
С Д. Том 16
16. Сердце дракона
Фантастика:
боевая фантастика
рейтинг книги
Ротмистр Гордеев 2
2. Ротмистр Гордеев
Фантастика:
попаданцы
альтернативная история
рейтинг книги
Хуррит
Фантастика:
героическая фантастика
попаданцы
альтернативная история
рейтинг книги
Наследник с Меткой Охотника
1. Десять Принцев Российской Империи
Фантастика:
попаданцы
альтернативная история
аниме
рейтинг книги
Двойник Короля
1. Двойник Короля
Фантастика:
попаданцы
аниме
фэнтези
фантастика: прочее
рейтинг книги
Последняя Арена 3
3. Последняя Арена
Фантастика:
постапокалипсис
рпг
рейтинг книги
Третий. Том 2
2. Отпуск
Фантастика:
космическая фантастика
попаданцы
рейтинг книги
Возлюби болезнь свою
Научно-образовательная:
психология
рейтинг книги
