Константин Шулюпин, создатель интерактивной карты (http://www.makelinux.net/kernel_map) ядра Linux, автор проекта Super Fast Boot (http://www.makelinux.com/emb/fastboot/) и разработчик драйверов для чипов DaVinci, представил (https://lkml.org/lkml/2012/11/13/531) проект LDT (https://github.com/makelinux/ldt/) (Linux Driver Template), в рамках которого подготовлен универсальный шаблон для быстрого создания драйверов устройств для ядра Linux. LDT может быть полезен для изучения методов написания драйверов начинающими разработчиками или в качестве отправной точки для создания новых драйверов.
Шаблон предоставляет средства для оформления модулей ядра, драйверов для символьных и блочных устройств, аппаратных и программных loopback-устройтв, включает примеры использования файловых операций, очередей kfifo, обработки прерываний, tasklet, потоков kthread, таймеров, псевдо ФС configfs, Device Model, трассировщика ftracer и других подсистем ядра.URL: https://lkml.org/lkml/2012/11/13/531
Новость: http://www.opennet.me/opennews/art.shtml?num=35325
И это хорошо. Особенно если вспомнить Касперски, который говорил, что дизасемблируя драйвера под Виндоус, создается впечатление, что подавляющее большинство из них сделано на основе единственного примера из Windows Driver Kit (WDK)
Еще был DriverStudio.Собсно для того продукт и сделан, чтобы скелет всякий раз наново не писать а только мясо на готовый развешивать.
А что в этом плохого?
Да автор комментария вроде и не говорил, что это плохо. Наоборот привел пример, что при наличии хорошего примера процесс значительно упрощается.
> А что в этом плохого?Прочти внимательно первое предложение поста, на который ты ответил
Лучше бы еще и визард на Qt сделал, чтобы было как в WinDriver - указал параметры, расставил галочки - готово.
Не, лучше мастер создания проекта для Visual Studio!
ну что за стереотипы??? я ведь серьезно - должна быть веская причина чтобы быть против моего варианта с GUI-визардом - что? не достаточно красноглазо? ну а зачем?
> ну что за стереотипы??? я ведь серьезно — должна быть веская причина
> чтобы быть против моего варианта с GUI-визардом — что? не достаточно
> красноглазо? ну а зачем?потому что не надо любителей «гуи-визардов» в ядро пускать. а то потом придётся как винде: на каждом углу пояснять, что «система-то у нас стабильная, это драйвера такие плохие…»
> потому что не надо любителей «гуи-визардов» в ядро пускать. а то потом
> придётся как винде: на каждом углу пояснять, что «система-то у нас
> стабильная, это драйвера такие плохие…»Глупое утверждение. Конечно сейчас можно получить очередной холивар, но... значит система плохая. Должно быть как в шифровании - решать проблемы не путем сокрытия алгоритма шифрования, а путем его устойчивости к взлому при полной его открытости. Так и с драйверами к ОС и ее устойчивости к ошибкам в оных - решать проблемы не путем всяческого искусственного ограничения доступности для любителей «гуи-визардов» и искусственного повышения уровня вхождения, а путем реализации механизмов устойчивости ядра к ошибкам в драйверах. Намек на микроядра с их драйверами, выполненных в виде сервисов/серверов, выполняющихся в юзерспейсе (про производительность не говорим, есть очень удачные реализации типа QNX, плохо только что народ не захотел развить его до ОС общего назначения). Ведь любитель «гуи-визардов» вероятно не будет писАть критически важный для системы драйвер типа работы с дисковой подсистемой или сетевой картой, а если и возьмется - то значит знаний у него наверное достаточно и это все-таки не новичок-любитель, а если и новичок, то не думаю что его важный, но глючный драйвер вдруг попадет в мейнстрим и все потом будут оправдываться что дескать система хороша но драйвер кривой. Но уже зная arisu по его прошлым постам, представляю сколько дерьма сейчас выльется.
никто не «повышает искусственно уровень вхождения». его просто не надо искусственно понижать: обезьяна с гранатой — это весьма неприятно.
> никто не «повышает искусственно уровень вхождения». его просто не надо искусственно
> понижать: обезьяна с гранатой — это весьма неприятно.Его уже много лет как в айти проваливают ниже плинтуса. Этих обезьян с гранатами - миллионы. Достаточно на дистровотч заглянуть разок.
Уже давно существует Linux Device Drivers со всеми необходимыми примерами,где разбирается разработка драйверов для символьных, блочных и сетевых устройств. ИXМО, мешать всё в кучу не есть хороший вариант.
Угу, а те кто по нему реально писали драйверы злобно усмехаются.
Устарел он, очень сильно устарел. Общие принципы неплохи, но большинство функций изменились, их заменили другими и т.п.Сейчас лучший способ написания Linux-драйвера - взять готовый из дерева исходников ядра, который больше всего тебе подходит за шаблон - и вписывать своё. Собственно автор LDT это понял и оформил на все случаи жизни шаблоны.
Виртуальным драйверописателям посвящаю.
а ещё бы загнать в C++ template =))
С++ template здесь вообще ни при чем.
Если делать такую вещь с прицелом на С++, это должен быть набор базовых классов с реализацией общих принципов и возможностью прописывания частностей в наследниках.
Ну, и общий код, в котором эти базовые классы пристраиваются к делу.
> а ещё бы загнать в C++ template =))В ядро linux C++ код не пускают категорически.
Годно!
какое количество устройств сейчас линукс-ядро поддерживает (в зависимости от ветки) а какое- нет? И насколько тот шаблон например увеличит количество создаваемых новых драйверов? (а может ли помочь в улучшении драйверов, уже существуюших?)
Какое количество слов вы знаете (в зависимости от времени сутокк) а какое- нет? И насколько ваше пребывание на этом ресурсе увеличивает количество знакомых слов?
А чем это лучше самого ядра и его драйверов? Можно взять простейший драйвер из интересуемой секции и его смотреть. К тому же он всегда будет в актуальном состоянии, а LDT это нужно отдельно от ядра поддерживать? Или я не понимаю чего?
Может кто напишет драйвер для Canon IP1000 (сам не умею). А то столько лет и драйвера нет, который бы работал 100%
Это вопрос не к ядерщикам, а к разработчику за спеками. Если есть спеки - можно ваять модуль для CUPS.
> Может кто напишет драйвер для Canon IP1000 (сам не умею)1500$, прим. срок 2 недели!
так не пойдет, свобода обесценивается, когда на нее вешают ценник, работайте на нас бесплатно
> работайте на нас бесплатноСогласен, тока подари мне BMW 320i Coupe MT, и путёвку в новогодние праздники на Мальдивы.
Это сарказм, я так понимаю? На самом деле, "свобода" (в понимании Столлмана) не ограничивается когда на нее вешают ценник. Ближайший пример - ядро Линукс, которое уже почти никто не пилит бесплатно, но оно, тем не менее, остаётся "свободным".
Константину респект, однозначно!