0

我正在尝试编写一个可加载的设备驱动程序.. 它能够对外部事件采取行动。请澄清以下几点。

1> modprob 命令用于向内核添加删除模块。它适用于静态模块吗?可以 modprobe 或 rmmod --- 删除 linux 内核的静态模块。

2>如果中断来了,我将保存数据并安排下半部分。现在,当下半部分完成其任务时,我将如何通知用户空间的应用程序数据可用。

3> 我正在考虑使用 debugfs 中的条目在应用程序和驱动程序之间传输数据。那么我的设备驱动程序和我的用户空间应用程序是否可行——通过使用 MAP() 系统调用在 debufs 中映射文件的相同区域并在彼此之间交换数据?

4

1 回答 1

0

modprob 命令用于向内核添加删除模块。它适用于静态模块吗?可以 modprobe 或 rmmod --- 删除 linux 内核的静态模块。

如果您的意思是静态模块=作为linux内核的一部分编译的模块(而不是作为单独的可加载模块),那么答案是;你不能。

如果中断来了,我将保存数据并安排下半部分。现在,当下半部分完成其任务时,我将如何通知用户空间的应用程序数据可用。

如果用户空间应用程序以轮询模式运行,您可以通过 ioctl 或 sysfs/procfs 文件通知它。但如果用户空间应用程序需要以事件驱动方式通知,则使用 netlink 套接字。

我正在考虑使用 debugfs 中的条目在应用程序和驱动程序之间传输数据。那么我的设备驱动程序和我的用户空间应用程序是否可行——通过使用 MAP() 系统调用在 debufs 中映射文件的相同区域并在彼此之间交换数据?

用户空间应用程序读取/写入 debugfs 的方式是简单地读取/写入 debugfs 文件(它位于 /proc/.. 或 /sys/.. 下,因此您可以“打开”文件,获取文件描述符,然后读取/write - 就好像它是一个普通文件一样)。

于 2012-12-28T22:31:46.350 回答