• Функция buildargv с помощью Ragel

      Забавное использование Ragel State Machine Compiler для создания функции разбора строки на int argc, char *argv[].


      Все началось с того, что понадобилась функция buildargv, чтобы разбирать строку для последующей передачи в


      int main (int argc, char *argv[]) { body }

      Ну ладно подумал я, не может быть, чтобы нигде нельзя было позаимствовать, сейчас найдем… И не нашёл...


      Читать дальше →
    • auto git bisect на примере ядра Linux

        Данная заметка имеет собой цель продемонстрировать автоматический git bisect на примере ядра Linux. С последующим поиском официальной версии начиная с которой всё поломалось и последней хорошей версии.


        Git

        Читать дальше →
        • +28
        • 8,8k
        • 1
      • Вся правда о linux epoll

          Ну или почти вся...



          Я считаю, что проблема в современном интернете — это переизбыток информации разного качества. Найти материал по интересующей теме не проблема, проблема отличить хороший материал от плохого, если у вас мало опыта в данной области. Я наблюдаю картину, когда очень много обзорной информации "по верхам" (практически на уровне простого перечисления), очень мало углубленных статей и совсем нет переходных статей от простого к сложному. Тем не менее именно знание особенностей того или иного механизма и позволяет нам сделать осознанный выбор при разработке.


          В статье я постараюсь раскрыть то, что является фундаментальным отличием epoll от других механизмов, то что делает его уникальным, а так же привести статьи, которые просто необходимо прочитать для более глубокого осмысления возможностей и проблем epoll.


          Anyone can wield an axe, but it takes a true warrior to make it sing melees melody.

          Я предполагаю, что читатель знаком с epoll, по крайней мере прочел страницу man. О epoll, poll, select написано достаточно много, чтобы каждый кто разрабатывал под Linux, хоть раз о нем слышал.

          Читать дальше →
        • Заметка о новом интерфейсе linux kernel — gpio uapi

            Начиная с версии ядра 4.6-r1 нам стал доступен новый интерфейс для взаимодействия с подсистемой ядра gpio. Теперь существует три официальных способа работы с gpio и получения от них прерываний. Нет смысла углубляться в потребности для данной подсистемы, для малой части это суровые будни, для другой части веселое хобби, и для всех вместе в ядре была предоставлена новая возможность взаимодействия.


            Заметка носит популярный характер, так как основных преимуществ, которые шли в комплекте с нововведением, а именно упрощение работы с gpio в контексте ядра касаться не будем.

            Читать дальше →
            • +11
            • 8,2k
            • 3
          • Использование gpio-generic и irq_chip_generic для драйвера gpio

              Данная статья является логичным продолжением предыдущей и её прочтение рекомендуется после ознакомления с предшествующим материалом. Текущая заметка необходима для понимания последующего материала, дополнительного понимания подсистемы gpio в целом и способствует разработке собственных gpio драйверов. Положения данной статьи уже применимы не только к нашему виртуальному драйверу gpio, но и к любому mmio gpio драйверу в целом. Речь пойдет об упомянутой в предыдущей части "оптимизации".

              Читать дальше →
            • Драйвер виртуальных GPIO с контроллером прерываний на базе QEMU ivshmem для Linux

              • Tutorial
              Природа прерываний

              Трудно недооценить роль GPIO, особенно в мире встраиваемых систем ARM. Помимо того, что это крайне популярный материал для всех руководств для начинающих, GPIO обеспечивают способ для управления многими периферийными устройствами, выступают в качестве источника ценных прерываний, или даже могут быть единственным доступным способом общения с миром для SOC.

              Основываясь на собственном скромном опыте, могу сказать, что прерывания далеко не самая освященная тема в сообществе Linux. Из-за своих особенностей, а так же сильной привязки к аппаратной части, все обучающие материалы посвященные прерываниям лишены реального и легко воспроизводимого примера. Данный факт мешает пониманию того, что очень часто прерывания и GPIO неразделимы, особенно в области встраиваемого Linux. Многие начинают верить, что GPIO это очень простая и скучная вещь (которая кстати и стала таковой благодаря подсистеме sysfs).
              Читать дальше →
              • +15
              • 12,7k
              • 3
            • Кросскомпиляция Qt-4.8.0 под mingw32 (x86) в Gentoo (x86_64)

              image
              Нет никакой необходимости устанавливать Qt заранее на целевую систему, не нужно тянуть предварительно скомпилированные библиотеки для Windows.

              Я проделал данный трюк на двух платформах, на Gentoo x86_64 установленной на VitualBox c оболочкой KDE 4.8 и соответвующими библиотеками Qt, и на домашнем сервере Gentoo x86_64 (Intel® Core(TM) i5 CPU 760 @ 2.80GHz) без какой либо графической оболочки и без предустановленных библиотек Qt.
              Читать дальше →