Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 内核到用户空间上的Dbus_Linux - Fatal编程技术网

Linux 内核到用户空间上的Dbus

Linux 内核到用户空间上的Dbus,linux,Linux,我有一个关于当前(2.6.35)内核上的dbus的问题。dbus是内核和用户空间之间的通信方式吗?我自己能弄明白。例如,如果您使用usb驱动程序(插入usb闪存笔之类的东西)并监视dbus(dbus监视器)的活动,那么答案可能是肯定的。但是在源代码中(usbselectron.c和小工具的驱动程序)没有dbus的迹象。在内核树中找不到Dbus.h。 非常感谢你。如果我弄错了,很抱歉,但我对设备驱动程序和DBU有点不在行 D-Bus(或“守护程序总线”)是基于Linux/Unix系统上进程间通信(

我有一个关于当前(2.6.35)内核上的dbus的问题。dbus是内核和用户空间之间的通信方式吗?我自己能弄明白。例如,如果您使用usb驱动程序(插入usb闪存笔之类的东西)并监视dbus(dbus监视器)的活动,那么答案可能是肯定的。但是在源代码中(usbselectron.c和小工具的驱动程序)没有dbus的迹象。在内核树中找不到Dbus.h。 非常感谢你。如果我弄错了,很抱歉,但我对设备驱动程序和DBU有点不在行

D-Bus(或“守护程序总线”)是基于Linux/Unix系统上进程间通信(简称进程间通信或IPC)的一种方式

它允许进程使用客户端可以调用的方法公开“D-Bus服务”。这些方法通常映射到用某种编程语言编写的实际方法。D-Bus是独立于语言的,但大多数工具包都有一些库,使其更易于使用-例如QtDbus


它与内核或驱动程序没有任何关系,但当然,如果驱动程序想要的话,没有人会阻止它们也拥有D-Bus服务。(这在某些情况下可能很有用。)

D-Bus用于用户空间应用程序之间的通信

如果要与设备驱动程序通信,则需要使用IOCTLs、netlink或创建新的系统调用。我在过去创建了netlink代码来与一个特殊的网卡通话,这相对来说比较容易做到。使用ioctl也很容易,但是您受到可以/应该通过它传递多少信息的限制

如果您想知道dbus与插入的USB设备之间的关系,我认为是这样的:


udev->udisks(正式的DeviceKit)->dbus->任何对磁盘事件感兴趣的dbus应用程序。“>

对于工作,我必须提供一个“测试”,它必须“证明”dbus是用户和内核空间之间通信的一种方式。有什么建议吗?(还有其他测试,如dbus与POSIX兼容等等)您必须编写某种守护程序,通过现有的内核用户IPC(如我列出的那些)与内核通信,并将此守护程序连接到D-Bus.Fill free以添加到答案中。