linux-kernel – 是否可以从Linux(ioctl)中的内核空间调用用户空间回调函数?

前端之家收集整理的这篇文章主要介绍了linux-kernel – 是否可以从Linux(ioctl)中的内核空间调用用户空间回调函数?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
是否可以在 Linux中扩展ioctl接口,以便用户空间应用程序可以向内核空间驱动程序发送指向函数的指针?

我特别想到了以用户可控方式处理流的方法,但是在内核中进行处理.这些操作可以附加到内核模块,但这会使开发变得更容易,因为我不需要在开发过程中弄乱内核.

更具体地说,这将是一个过程:

>数据由驱动程序读取到缓冲区.
>数据由这些用户定义的函数处理.
>完成了一些处理,可能还有一些HW块.
>数据由用户空间应用程序使用.

解决方法

我认为您可以通过让驱动程序提供用户空间应用程序打开的一个或多个字符设备(或块设备)来实现您的目的.

然后,您可以使用inotify(linux journal article)进行内核 – >用户空间事件通信. Ioctl或写入设备以进行用户空间 – >内核事件通信.还可以通过读/写一个或多个设备文件来实现数据交换.

或者,您可以提供/ proc或/ sys文件系统条目或使用netlink.

您可能还会考虑ksocket

Ksocket is a linux 2.6 kernel module that provides bsd-style socket interfaces (namely socket,bind,listen,connect,accept,…) for kernel developers to facilitate their network progaramming in linux kernel space. The interfaces ksocket presents are much the same as their equivalent in glibc,so even new developers for kernel space will have no barrier in developing kernel network-related programms.

猜你在找的Linux相关文章