第一种:fileoparetion里的open close read write ioctl........:
第二种:属性操作中对文件进行读写,这种是重要的,也是常见的:


这就完成了声明,然后再在probe里加上这么一句注册就行了:

这个就是常常能见到的驱动文件给用户的接口了。怎么用呢?
这个很是困惑我一段时间,网上类似的文章也不多,大概是大家觉得这么简单的东西没必要写吧,那作为菜鸟的我来写:
如这个device_create_file后会生成的一个文件名叫isa1200_mode的文件,如生成了目录:
/sys/class/……/isa1200/device/isa1200_mode
那么对它进行读写就是这样的:sudo echo 1 >/sys/class/……/isa1200/device/isa1200_mode,也就是把1写进了文件isa1200_mode里,那么属性机制就会分析这个操作,并调用isa1200设备驱动的isa1200_mode_store函数,并会把写入的1当作参数*buf来处理。通过一句if (sscanf(buf, "%d", &enable) != 1)就把1传给了enable,一直进行接下来的工作。这下面的工作当然就好理解了,isa1200_mode_store里也是调用驱动中写好的函数来完成操作工作。
上面说是操作只是通常的用户接口,对于不同的设备还是会有其它更好的接口:1. led_classdev,led类的一个常用接口:brightness

这就完成了声明,然后再在probe里加上这么一句注册就行了:
第二种:属性操作中对文件进行读写,这种是重要的,也是常见的:


这就完成了声明,然后再在probe里加上这么一句注册就行了:

这个就是常常能见到的驱动文件给用户的接口了。怎么用呢?
这个很是困惑我一段时间,网上类似的文章也不多,大概是大家觉得这么简单的东西没必要写吧,那作为菜鸟的我来写:
如这个device_create_file后会生成的一个文件名叫isa1200_mode的文件,如生成了目录:
/sys/class/……/isa1200/device/isa1200_mode
那么对它进行读写就是这样的:sudo echo 1 >/sys/class/……/isa1200/device/isa1200_mode,也就是把1写进了文件isa1200_mode里,那么属性机制就会分析这个操作,并调用isa1200设备驱动的isa1200_mode_store函数,并会把写入的1当作参数*buf来处理。通过一句if (sscanf(buf, "%d", &enable) != 1)就把1传给了enable,一直进行接下来的工作。这下面的工作当然就好理解了,isa1200_mode_store里也是调用驱动中写好的函数来完成操作工作。
上面说是操作只是通常的用户接口,对于不同的设备还是会有其它更好的接口:1. led_classdev,led类的一个常用接口:brightness

这就完成了声明,然后再在probe里加上这么一句注册就行了: