示例驱动程序已成功创建和加载,因为编写了用户定义的函数,它会执行一些操作。我需要编写一个用户程序来调用驱动程序模块中的用户定义函数。
在以下情况下需要帮助。
- 如何从用户程序访问驱动程序代码?。
- 如何从用户程序中调用内核模块中编写的函数?
醇>
感谢。
答案 0 :(得分:7)
您可以让驱动程序对写入(或必要时,ioctl)对/ dev / xxx文件或/ proc / xxx文件做出反应。此外,您可以创建一个新的系统调用,但这更像是一个玩具,因为该模块只适用于自定义构建的内核。
编辑:尝试http://www.faqs.org/docs/kernel/x571.html(在角色设备驱动程序上。)
答案 1 :(得分:3)
这取决于你的功能是什么,但一般来说:
如果您希望以值的形式存储和显示属性(例如背光的当前亮度),标准的做法是使用sysfs:http://kernel.org/doc/Documentation/filesystems/sysfs.txt
如果要从设备(实际或虚拟)写入/读取值,请将设备的内存或IO区域导出到用户空间,或者更一般地控制设备(例如,设置摄像机的分辨率和捕获你会使用带有read / write / mmap和ioctl函数的字符或块设备:http://luv.asn.au/overheads/chrdev-talk.html
最后,如果你的函数只是控制来自内核的东西,那么sysfs或procfs应该是可行的方法。我不知道为什么人们现在仍在使用procfs,除了misc设备之外。
因此,通常,您需要通过文件将内核函数导出到用户空间,方法是定义在打开,读取,写入文件时调用的挂钩(从/向复制数据)用户空间),mmap'ed(共享内存区域而不复制)或调用ioctl时(执行更一般的控制)。
答案 2 :(得分:1)
答案 3 :(得分:0)
: 读/写/ ioctl请参阅file_operations 对于Qn.2: 1)系统调用 2)driver - ioctl