linux内核模块开发缓冲到长期问题

时间:2018-09-19 12:42:11

标签: linux module kernel

我是内核模块开发的新手,并陷入了某种困境。 我有一个设备节点设置,并希望通过以下方式将一个整数写入文件:

echo 20000> / dev / chardev0

我在device_write(... const char * buff)中收到了预期的20000,并希望将其转换为long。我已经找到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

那么,解决这个问题的最佳方法是什么?

0 个答案:

没有答案