Off-topic: D-Bus in the kernel
Alban Crequy
alban.crequy at collabora.co.uk
Thu Sep 16 03:25:45 PDT 2010
Le Thu, 16 Sep 2010 07:37:33 +0300,
"Rémi Denis-Courmont" <remi at remlab.net> a écrit :
> Hello,
>
> On Thursday 16 September 2010, Soh Kam Yung wrote:
> > Just spotted this interesting post about putting d-bus in the
> > kernel
> > [ http://alban.apinc.org/blog/2010/09/15/d-bus-in-the-kernel-faster/ ]
>
> Unfortunately, the D-Bus bus is too feature-bloated to be implemented
> in kernel. For one thing, routing messages will be no fun, the kernel
> would have to parse and keep track of the AddMatch requests.
It is not conditional or future: the prototype does parse match rules
in the kernel and keep track of them with very similar data structures
to dbus-daemon (but using rb tree and lists from the kernel instead of
DBusHash and DBusList).
> Arguably, a kernel-space D- Bus should implement signal subscription
> out-of-band (compare to the IP multicast ioctl()s). But then it's not
> really the D-Bus protocol anymore.
I kept the same D-Bus protocol in the prototype.
> Feature negotiation will also make a kernel implementation more
> difficult. It means more messages to parse and more state to keep in
> kernel.
Which feature negotiation do you refer to?
> But I expect the worst part of a kernel D-Bus to be the security
> enforcement. Parsing files in kernel space is a complete non-starter,
> and that includes service files. So it might be possible to move the
> session bus to kernel space, but I am not very optimistic about the
> system bus. Hmm, anyone for dbustables and NetFilter-DBus?
Indeed. Nothing is decided for the security policy. There are still
design choices to do! Looking into NetFilter is my next step.
> Also, this article contains some highly suspicious inaccuracies.
> skb_clone() does not copy message buffers, only buffer heads.
I didn't say skb_clone copies the message buffers but the opposite
actually: the message buffer is copied exactly one time and the buffer
heads are copied as many time as there is recipients by using
skb_clone().
My first version did copy the buffers several times, but then I
understood how to use skb_clone() correctly and fixed it.
Is there other inaccuracies or something unclear?
--
Alban
More information about the dbus
mailing list