Вот доков мало, приходится по крупицам собирать. Вопрос, имхо, нужно бы разделить на 2. Есть слой адаптации - VFS. Это некий универсальный интерфейс между ядром Linux и кодом файловой системы.
собственно поэтому я здесь
Т.е. нужно искать инфу по VFS. - Тут есть книжка «Разработка ядра Линукс», автор Роберт Лав. Находил еще пару статей, в том числе и на русском. Собственно, тут ничего особенно сложного нет, нужно регистрировать свою фс в ядре, потом заполнять зубодробильные структуры размером на несколько рулонов обоев.
у меня уже больше 1000 строк кода и mount до сих пор неработает.
Например, из самого такого огромного кораллового рифа - msleep(). Коварная функция. Отправляет к-трид (kernel-трид, поток исполнения в ядре, ядро тоже многозадачное :-) ) в сон, присваивает потоку свойство, что его можно перекрыть, т.е. остановить и переключиться на другой поток. НЕЛЬЗЯ вызывать ее из контекста прерывания! Потому что возвращаться будет некуда. Так же она несовместима со спин-блокировками. Тут верно и обратное, если у вас поток может уйти в сон, то НЕЛЬЗЯ использовать спин-блокировки. Казалось бы проблема исчерпана, но! многие функции ядра отправляют к-трид в сон. Причем это не всегда документировано. Например, копирование данных из/в userspace стопроцентно положит ваш поток спать, ядро займется пока более интересными вещами и разбудит ваш поток, когда копирование закончится.
а еще некоторые делают usleep() на пол-секунды в прерывании а потом жалуются что система тормозит :)))
Ага, ок, я понял, тебе нужно больше по второй части вопроса? Если так, то ведь это целая научная работа. Единой статьи как создать фс нет и не будет. У каждой свой дизайн. Наверное нужно читать про составляющие фс, про методы работы с данными. Тут я тебе не советчик. Да и никто наверно не советчик.
usleep в прерывании скорее всего закончится, хорошо если кернел-паником, а в худшем случае непредсказуемым поведением и будете очень долго искать причину.