February 17th, 2020

Костерок

FLI & linux

Линус, кажется, сошел с ума. Иначе зачем клепать новые версии ядра с такой нечеловеческой скоростью? В итоге многие производители железа просто забили на этот идиотизм и перестали поддерживать линукс.
Вот так и FLI. На сайте производителя уже модуль ядра под версией 1.3.2. Однако, даже под древнючее третье ядро скомпилировать его не представляется возможным (даже Makefile написан с переменной SUBDIRS вместо M).
Я уже когда-то (в далеком 2017 году) потратил день-другой на переделку модуля 1.3.0 под ядро >4.9.0 (судя по шапке, проверял на ядрах 4.9.4 и 4.12.5), но вот обновил ядро на 5.4.16 и пришлось опять это вытворять! Благо, перемен совсем немного: макрос access_ok принимает теперь лишь два параметра вместо трех. Решилось это просто добавлением в начало файла макроса:
#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 0, 0)
#define ACCESS_OK(a,b,c)  access_ok(b, c)
#else
#define ACCESS_OK(a,b,c)  access_ok(a, b, c)
#endif

и заменой access_ok на ACCESS_OK в теле исходника.

P.S. У ЖЖ движок совершенно дебильный! Писал эту заметку в dreamwidth, там и с текстом, и с метками все нормально. А здесь понадобавлялись метки из кода (все директивы препроцессора!).
Вот же маразм!!! Теперь вместо символа "номер" ("диез") нужно в код вставлять его код: амперсанд-номер-35-;. Это что еще за безобразие такое?

P.P.S. В итоге написал простой скрипт, чтобы конвертировать "запрещенные" символы:
#!/bin/bash
echo '<code lang="C"><pre style="border-left: 4px solid; border-top: 1px dashed; border-bottom: 1px dashed; max-height: 300px; overflow: auto; padding: 5px" title="Code block">'
sed  -e 's|\&|\&amp;|g' -e 's|<|\&lt;|g' -e 's|#|\&#35;|g' -e 's|>|\&gt;|g'
echo '</pre></code>'
promo eddy_em august 17, 12:33 3
Buy for 10 tokens
Юра намедни напечатал корпус для хронометра. Для первого блина получилось неплохо: И еще немного фотографий: