问题标签 [hotplugging]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
linux - Linux 内核配置设备的顺序是什么?
正如我在阅读 Linux Device Drivers 3rd Edition 中与 Linux 设备模型相关的章节后所了解的那样,当配置新设备时,内核(2.6)或多或少遵循以下顺序:
- 设备在驱动核心中注册(
device_register()
,其中包括设备初始化) - 在设备模型中注册了一个 kobject
- 它在 sysfs 中创建一个条目并引发热插拔事件
- 检查总线和驱动程序以查看哪一个与设备匹配
- 探测
- 设备绑定到驱动
我的主要疑问是,在第 1 步中,何时device_register()
调用以及应该在device
结构中设置哪些字段?
它是由设备所连接的总线调用的吗?代码中有任何示例吗?
我有什么误解吗?:)
linux-kernel - Hal需要看到什么linux设备?
我正在尝试了解 Linux Kernel 上的设备驱动程序,为此我创建了三个模块:
- 总线型
- 设备驱动程序
- 一个现在什么都不做的假设备,只是被注册了
一切正常,我可以加载总线、驱动程序和创建设备的模块。一切都出现在 sysfs 上,包括设备和设备驱动程序之间的链接,表明它们已绑定。
当驱动程序和设备被加载时,我可以看到使用udevadm monitor
它也会引发一些事件:
但毕竟,该设备没有出现在 hal 上。hal 还需要什么设备才能看到?
winapi - 检测在 Windows 7 下连接或移除的外接显示器
每次在运行 Windows 7 的笔记本电脑上插入或拔出外部 LCD 显示器时,我是否可以接收或挂接某些事件或通知?
笔记本电脑检测到这一点并将我的显示器切换到外部屏幕并通过某些类型的调整大小或重新定位返回,但这是否由操作系统公开,以便应用程序可以提供处理程序、附加脚本等?
如果没有,是否有我可以不时轮询的注册表设置或 API?
(我更喜欢编程 C + Win32 API)
更新
迈克在下面的回答WM_DEVICECHANGE
让我明白了RegisterDeviceNotification()
,但到目前为止我一直在努力实现它......
更新 2
这个问题已经用不同的措辞问了几次,但我认为还没有完全回答:
ide - virsh 命令的问题
我一直在尝试使用 virsh attah-disk 附加一个 qcow2 文件作为附加存储源。我使用的语法是(来自互联网):
如果 vm 正在运行或暂停,它会显示:
如果 vm 已关闭,则显示:
我不确定 hdc 参数。我也尝试将附加设备功能与 xml 文件一起使用:
但这也表明:
我查看了许多示例,但没有一个有效,并且都具有几乎相同的语法。如果有人可以帮助我找出错误。
VM的完整配置文件
linux-kernel - 将硬件连接到计算机时如何创建设备节点?
我想知道当硬件连接到系统时如何创建设备节点。
我知道的信息:
当一个硬件连接到系统时,将设备名称与驱动程序名称进行比较,如果匹配,则调用probe。
我想知道的信息:
设备节点是在什么时候创建的,谁在创建它?(换句话说,我想知道 mknod 发生在哪里?)
这件事困扰了我好几个月。请以编程方式告诉我这是在哪里发生的。
embedded-linux - 当我有 mdev 时,是否有理由使用 udev?
我正在运行基于 TI 的 Arago 基础映像的嵌入式 linux 系统。这个发行版带有 mdev 和 udev。似乎它们中的任何一个都没有配置,所以我将在其中一个中进行选择。该系统非常强大(ARM A8 1 GHz),因此 CPU 功率并不是真正的问题。
那么,当 mdev 可用时,还有什么理由选择 udev 呢?是否存在 mdev 无法应对的场景?
linux-kernel - 在 Linux 中自动执行 USB 的热插拔事件
我正在研究迷你路由器项目,并希望在设备插入路由时自动执行 USB 热插拔事件。
使用的内核版本是 2.6.30,并且配置了 CONFIG_HOTPLUG。
我用谷歌搜索并编写了热插拔脚本,但没有在 holplug 上获得事件。任何人都可以瞥见解决方案。
multithreading - CPU 热插拔和严格的 1:1 线程
我希望在具有严格关联规则的应用程序中添加对 CPU 热插拔的支持。每个物理核心都固定有一个线程,但我用于将线程固定到 CPU 的逻辑相当幼稚,如果 0..N 之间的 CPU 离线,则会失败。
我选择了一种方法,其中我有一个 size 数组,MAX_CPU
系统上的每个 CPU 通过其标识符映射到一个插槽。例如,CPU0 ->threads[0]
和 CPU1 ->threads[1]
等等。这个想法是反映系统的设置。
但是,如果在任何地方遇到离线 CPU,它就会失败。
更糟糕的是,当 CPU 在运行时脱机时,固定线程的关联掩码会在没有通知的情况下重置。
最终,我希望支持复杂的设置,例如:
如何将在线和离线 CPU:s 的意识整合到我的应用程序中?
我正在避免/proc
并且/sys
因为我有兴趣移植到其他平台,特别是各种 BSD:s。我现在使用 x86_64,所以该cpuid
指令可能有用。
qt - DirectFB/QT Embedded 中的 USB 鼠标热插拔
在 DirectFB 1.2.9 或 Qt Embedded 4.7.3 中有什么方法可以实现 USB 鼠标的热插拔?
目前我的应用程序堆栈是这样的..
DirectFB 打开 Linux 输入设备节点。Qt 使用 QSocketNotifier 等待 DirectFB 事件缓冲区并设置一个插槽来读取鼠标数据。但是在热插拔时,DirectFB 不会打开设备节点,也不会生成鼠标事件。
据我所知,DirectFb 不支持热插拔。
我尝试禁用 DirectFB 对 Linux 输入设备的处理(从 directfbrc 中的 linux-input-devices= 选项中删除 dev 节点),并设置 QWS_MOUSE_PROTO="linuxinput:.." 但这由于某种原因不起作用。似乎没有生成鼠标事件。即使我设法让它工作,我也不认为 QT 对热插拔提供任何支持。
那么我唯一的替代子类 QMouseDriverPlugin 和 QWSMouseHandle 类吗?为此,我还没有弄清楚如何让 QT 使用我实现的子类。即,一旦我实现了这些类,我如何将它们链接到 QT 输入设备处理框架中,以便我可以设置类似 QWS_MOUSE_PROTO="mylinuxinput:.." 的东西?
linux-kernel - 热插拔设备的 sysfs 条目
我已经读过驱动程序核心通过netlink从sysfs发送uevents到udev或一些正在监听它的守护进程,然后在udev识别相应的驱动程序并加载它之后。但是如何创建对应于热插拔设备的 sysfs 条目?.
提前感谢您的回复。