用户态怎样调用驱动里的函数

发布于 2022-09-22 13:17:32 字数 55 浏览 22 评论 0

想请教下:在用户态应用程序中怎样调用驱动里写的函数?ioctl方式好像可以,除了它还有没有其他的方式可以实现?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

凉宸 2022-09-29 13:17:32

自己搞个系统调用

不甘平庸 2022-09-29 13:17:32

用系统调用的话要修改内核那样估计很麻烦

陪你到最终 2022-09-29 13:17:32

原帖由 zouzheng 于 2008-11-1 20:45 发表
想请教下:在用户态应用程序中怎样调用驱动里写的函数?ioctl方式好像可以,除了它还有没有其他的方式可以实现?

不知道你所谓的调用是什么意思?
用户空间的程序,要访问具体的硬件设备,当然是要通过具体的系统调用,最终调用特定的驱动程序才可以访问。
如果你指的是用户空间要与系统空间的通信的实现的话,那有很多种方式。

污味仙女 2022-09-29 13:17:32

是这样的,我要为应用程序提供一些API函数来操作硬件的某些寄存器接口,如果我直接写这些API函数而不在驱动里写,那么这些API处于用户态应该不能够直接来内核态寄存器接口,我想法是在驱动里写好这些操作寄存器接口的函数,然后在用户态的API函数调用驱动里的这些操作寄存器接口的函数。你有什么有好的建议?
用户空间要与系统空间的通信的实现的话,那有很多种方式。你指的是如copy_to_user  copy_form_user等吗?这个如果用ICOTL可能用的着

臻嫒无言 2022-09-29 13:17:32

原帖由 zouzheng 于 2008-11-1 23:26 发表
是这样的,我要为应用程序提供一些API函数来操作硬件的某些寄存器接口,如果我直接写这些API函数而不在驱动里写,那么这些API处于用户态应该不能够直接来内核态寄存器接口,我想法是在驱动里写好这些操作寄存器 ...

你这个操作用ioctl是比较合理的,用户空间和内核空间的通信问题,在这里讨论就比较复杂了。包括:模块启动参数,sysfs,proc文件,netlink等等。
但ioctl在驱动程序中的实现,需要对应用户空间的接口函数的参数,操作什么样的寄存器,传什么样的值等等。

凡尘雨 2022-09-29 13:17:32

重发发帖啊。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文