Привет!
Пишу простой драйвер под Linux - драйвер char-типа. При побайтовом чтении файла-драйвера, получаю квадраты значений (каждое значение - позиция указателя в файле), то есть при первом считывании одного байта с файла-драйвера получаю значение 0, при втором считывании - значение 1, при 3-м считывании - 4, при 4-м считывании - 9, при 5-м - 16 итд. Драйвер входит в монолитную часть ядра Linux. Версия ядра - 2.6.20. При тестировании выявил ошибку, но отладить не могу - printk() не работает. ГЛАВНЫЙ ВОПРОС: КАК заставить printk() заработать!
Операции драйвера:
- read
- seek
Выявленная ошибка на примере: считал 5 байтов(получил: 0, 1, 4, 9, 16), далее при fseek(file_drv,
-8, SEEK_CUR) - позиционирую "курсор" в файле назад на 8, но "курсор" не спозиционировал назад, а остался, где БЫЛ!, и на выводе получаю опять 16. А должно было быть так: 5 - 8 = -3 ... отрецательная позиция "курсора" в файле - не пойдет...надо, в этом случае, установить значение 0, и тогда на выходе будет значение 0^2 = 0...короче - ноль должен был быть на выходе!. При SEEK_SET история тажа.
Нужна отладка....КАК заставить printk() заработать!