Я новичок в разработке модулей ядра и кое-что застрял.Я настроил узел устройства и хочу записать в файл целое число через:
echo 20000> / dev / chardev0
Я получаю ожидаемое значение 20000 в device_write (... const char* любитель) и хочу преобразовать его в длинный.Я нашел strict_strtol или kstrtol, но странное поведение, которое я получаю, такое же.
Проблема: Когда я отправляю 20000, преобразование проходит хорошо.Когда я отправляю 200, преобразование завершается с ошибкой -22.Почему ???
Я использую:
long li;
int result = 0;
result = strict_strtol(msgBuffer, 10, &li);
См .: (через printk я напечатал некоторые данные)
Sep 19 14:30:52 student-fontys kernel: [ 5336.805308] Data 200
Sep 19 14:30:52 student-fontys kernel: [ 5336.805308] 0
Sep 19 14:30:52 student-fontys kernel: [ 5336.805311] Buffer lengte2: 4
Sep 19 14:30:52 student-fontys kernel: [ 5336.805312] 2
Sep 19 14:30:52 student-fontys kernel: [ 5336.805313] 0
Sep 19 14:30:52 student-fontys kernel: [ 5336.805314] 0
Sep 19 14:30:52 student-fontys kernel: [ 5336.805315]
Sep 19 14:30:52 student-fontys kernel: [ 5336.805315]
Sep 19 14:30:52 student-fontys kernel: [ 5336.805317] Conversion from buffer failed. Error -22
Sep 19 14:31:12 student-fontys kernel: [ 5357.282007] Device-write start
Sep 19 14:31:12 student-fontys kernel: [ 5357.282013] Data 20000
Sep 19 14:31:12 student-fontys kernel: [ 5357.282015] Buffer lengte2: 6
Sep 19 14:31:12 student-fontys kernel: [ 5357.282016] 2
Sep 19 14:31:12 student-fontys kernel: [ 5357.282017] 0
Sep 19 14:31:12 student-fontys kernel: [ 5357.282018] 0
Sep 19 14:31:12 student-fontys kernel: [ 5357.282019] 0
Sep 19 14:31:12 student-fontys kernel: [ 5357.282020] 0
Sep 19 14:31:12 student-fontys kernel: [ 5357.282021]
Sep 19 14:31:12 student-fontys kernel: [ 5357.282021]
Sep 19 14:31:12 student-fontys kernel: [ 5357.282023] Data: 20000
Sep 19 14:31:12 student-fontys kernel: [ 5357.282023] Device-write end
Итак, что было бы лучшеспособ справиться с этим?