Я написал верификатор eBPF для микроконтроллера. А потом ядро Linux объяснило мне, где я неправ
Habr ·

Ученики подарили мне ESP32. В коробке было всё, что обычно: датчик температуры, реле, горсть светодиодов, круглый дисплей и провода, которых, как выяснится позже, всегда не хватает ровно на один. Нормальный человек собирает из этого термостат за вечер. Я собрал термостат, посмотрел на него и подумал: а неприятно же будет каждый раз лезть с кабелем, если я захочу поменять порог с 22 на 23 градуса. Дальше мысль поехала не туда, и в итоге на плате оказался интерпретатор eBPF со своим верификатором байткода . Логика управления теперь заливается по Wi-Fi обычной программой на C, скомпилированной clang -target bpf . А потом я взял десять маленьких программ и прогнал каждую через свой верификатор и через верификатор ядра Linux, чтобы посмотреть, кто из нас двоих что думает. Сошлись шесть из десяти. Про оставшиеся четыре и написана статья — они оказались интереснее, чем сам проект. Читать далее
Ученики подарили мне ESP32. В коробке было всё, что обычно: датчик температуры, реле, горсть светодиодов, круглый дисплей и провода, которых, как выяснится позже, всегда не хватает ровно на один. Нормальный человек собирает из этого термостат за вечер. Я собрал термостат, посмотрел на него и подумал: а неприятно же будет каждый раз лезть с кабелем, если я захочу поменять порог с 22 на 23 градуса. Дальше мысль поехала не туда, и в итоге на плате оказался интерпретатор eBPF со своим верификатором байткода . Логика управления теперь заливается по Wi-Fi обычной программой на C, скомпилированной clang -target bpf . А потом я взял десять маленьких программ и прогнал каждую через свой верификатор и через верификатор ядра Linux, чтобы посмотреть, кто из нас двоих что думает. Сошлись шесть из десяти. Про оставшиеся четыре и написана статья — они оказались интереснее, чем сам проект. Читать далее