在 Linux 驱动程序中同步线程时,我非常喜欢几个函数,即 :
wait_for_completion()
和它的对应函数complete_and_exit()
用 2 个线程实现这个 api 是否可行,共享一个内存映射,分别是内核中的写入器和用户空间中的读取器?
如果不是,那么为wait_for_completion()
C 语言用户空间线程提供的工作是什么?
问候, CyrIng (Fr)
在 Linux 驱动程序中同步线程时,我非常喜欢几个函数,即 :
wait_for_completion()
和它的对应函数complete_and_exit()
用 2 个线程实现这个 api 是否可行,共享一个内存映射,分别是内核中的写入器和用户空间中的读取器?
如果不是,那么为wait_for_completion()
C 语言用户空间线程提供的工作是什么?
问候, CyrIng (Fr)
用户空间进程可以ioctl()
对通过mknod
. 您的设备驱动程序可以使用来自ioctl
系统调用的参数来为wait_for_completion()
调用提供参数。例如,用户进程可以ioctl()
用来传递一个结构,该结构包含某种代码来识别它想要什么,一个指向用户空间缓冲区的指针,以及一个包含缓冲区大小的大小字段。处理 的内核线程ioctl()
然后可以阻塞wait_for_complete()
,然后用数据填充用户空间缓冲区。
有关处理示例,请参见此网页ioctl()
:
介绍 ioctl()
输入/输出控制(ioctl,简称 ioctl)是大多数驱动程序类别中可用的常见操作或系统调用。这是一种万能的系统调用。如果没有满足特定要求的其他系统调用,则使用 ioctl()。
实际示例包括音频设备的音量控制、视频设备的显示配置、读取设备寄存器等——基本上,与设备输入/输出或设备特定操作有关,但对于任何类型的操作都足够通用(例如,通过查询驱动程序数据结构来调试驱动程序)。
...