Pull to refresh

Comments 7

1) У вас что-то со стилем, особенно пробелы\их отсутствие при присваивании.
2) Зачем для fifo двусвязный список?
3) Зачем использовать списки ядра? Если уж берете ядро — то вперед kfifo уже готов. Дабы не лочить лишний раз в одном потоке — __kfifo_put/__kfifo_get
1) Попытался исправить, кажется безуспешно.
2) Это пример использования списка.
3) Например, для создания очередей управляющих блоков. Для очереди на основе двусвязного списка возможна вставка в середину списка, просмотр элементов списка от головы к хвосту, в обратном направлении, по кольцу. Память для списка может выделяться динамически в процессе работы. Память под kfifo выделяется при создании, что не всегда удобно.
По третьему пункту. Соглашусь с предыдущим комментатором — если уж очередь, так берите готовый API, а аргумент насчёт обратного направления к сожалению не очень хорош если разговор идёт о lockless способе доступа (я уже молчу, что у вас синхронизации доступа не наблюдается в принципе). И на десерт, посмотрите также klist.h.
на самом деле это статья — пример использования конкретного инструментария, а не руководство по оптимальному решению пользовательской задачи.
По поводу блокировки, никто не мешает добавить мьютекс в fifo, либо fifo_item.
Все же ядро не лучшее место для велосипедостроения
Спасибо за ссылку. Двусвязный список в ядре Linux также реализован в виде макросов и inline кода.
Sign up to leave a comment.

Articles