1 <?xml version='1.0'?> <!--*-nxml-*-->
2 <!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
3 "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
9 <productname>kdbus</productname>
13 <refentrytitle>kdbus</refentrytitle>
14 <manvolnum>7</manvolnum>
18 <refname>kdbus</refname>
19 <refpurpose>Kernel Message Bus</refpurpose>
23 <title>Synopsis</title>
25 kdbus is an inter-process communication bus system controlled by the
26 kernel. It provides user-space with an API to create buses and send
27 unicast and multicast messages to one, or many, peers connected to the
28 same bus. It does not enforce any layout on the transmitted data, but
29 only provides the transport layer used for message interchange between
33 This set of man-pages gives a comprehensive overview of the kernel-level
34 API, with all ioctl commands, associated structs and bit masks. However,
35 most people will not use this API level directly, but rather let one of
36 the high-level abstraction libraries help them integrate D-Bus
37 functionality into their applications.
42 <title>Description</title>
44 kdbus provides a pseudo filesystem called <emphasis>kdbusfs</emphasis>,
45 which is usually mounted on <filename>/sys/fs/kdbus</filename>. Bus
46 primitives can be accessed as files and sub-directories underneath this
47 mount-point. Any advanced operations are done via
48 <function>ioctl()</function> on files created by
49 <emphasis>kdbusfs</emphasis>. Multiple mount-points of
50 <emphasis>kdbusfs</emphasis> are independent of each other. This allows
51 namespacing of kdbus by mounting a new instance of
52 <emphasis>kdbusfs</emphasis> in a new mount-namespace. kdbus calls these
53 mount instances domains and each bus belongs to exactly one domain.
57 kdbus was designed as a transport layer for D-Bus, but is in no way
58 limited, nor controlled by the D-Bus protocol specification. The D-Bus
59 protocol is one possible application layer on top of kdbus.
63 For the general D-Bus protocol specification, its payload format, its
64 marshaling, and its communication semantics, please refer to the
65 <ulink url="http://dbus.freedesktop.org/doc/dbus-specification.html">
66 D-Bus specification</ulink>.
72 <title>Terminology</title>
77 A domain is a <emphasis>kdbusfs</emphasis> mount-point containing all
78 the bus primitives. Each domain is independent, and separate domains
79 do not affect each other.
86 A bus is a named object inside a domain. Clients exchange messages
87 over a bus. Multiple buses themselves have no connection to each other;
88 messages can only be exchanged on the same bus. The default endpoint of
89 a bus, to which clients establish connections, is the "bus" file
90 /sys/fs/kdbus/<bus name>/bus.
91 Common operating system setups create one "system bus" per system,
92 and one "user bus" for every logged-in user. Applications or services
93 may create their own private buses. The kernel driver does not
94 distinguish between different bus types, they are all handled the same
97 <refentrytitle>kdbus.bus</refentrytitle>
98 <manvolnum>7</manvolnum>
105 <title>Endpoint</title>
107 An endpoint provides a file to talk to a bus. Opening an endpoint
108 creates a new connection to the bus to which the endpoint belongs. All
109 endpoints have unique names and are accessible as files underneath the
110 directory of a bus, e.g., /sys/fs/kdbus/<bus>/<endpoint>
111 Every bus has a default endpoint called "bus".
112 A bus can optionally offer additional endpoints with custom names
113 to provide restricted access to the bus. Custom endpoints carry
114 additional policy which can be used to create sandboxes with
115 locked-down, limited, filtered access to a bus. See
117 <refentrytitle>kdbus.endpoint</refentrytitle>
118 <manvolnum>7</manvolnum>
125 <title>Connection</title>
127 A connection to a bus is created by opening an endpoint file of a
128 bus. Every ordinary client connection has a unique identifier on the
129 bus and can address messages to every other connection on the same
130 bus by using the peer's connection ID as the destination. See
132 <refentrytitle>kdbus.connection</refentrytitle>
133 <manvolnum>7</manvolnum>
142 Each connection allocates a piece of shmem-backed memory that is
143 used to receive messages and answers to ioctl commands from the kernel.
144 It is never used to send anything to the kernel. In order to access that
145 memory, an application must mmap() it into its address space. See
147 <refentrytitle>kdbus.pool</refentrytitle>
148 <manvolnum>7</manvolnum>
155 <title>Well-known Name</title>
157 A connection can, in addition to its implicit unique connection ID,
158 request the ownership of a textual well-known name. Well-known names are
159 noted in reverse-domain notation, such as com.example.service1. A
160 connection that offers a service on a bus is usually reached by its
161 well-known name. An analogy of connection ID and well-known name is an
162 IP address and a DNS name associated with that address. See
164 <refentrytitle>kdbus.name</refentrytitle>
165 <manvolnum>7</manvolnum>
172 <title>Message</title>
174 Connections can exchange messages with other connections by addressing
175 the peers with their connection ID or well-known name. A message
176 consists of a message header with information on how to route the
177 message, and the message payload, which is a logical byte stream of
178 arbitrary size. Messages can carry additional file descriptors to be
179 passed from one connection to another, just like passing file
180 descriptors over UNIX domain sockets. Every connection can specify which
181 set of metadata the kernel should attach to the message when it is
182 delivered to the receiving connection. Metadata contains information
183 like: system time stamps, UID, GID, TID, proc-starttime, well-known
184 names, process comm, process exe, process argv, cgroup, capabilities,
185 seclabel, audit session, loginuid and the connection's human-readable
188 <refentrytitle>kdbus.message</refentrytitle>
189 <manvolnum>7</manvolnum>
198 The API of kdbus implements the notion of items, submitted through and
199 returned by most ioctls, and stored inside data structures in the
200 connection's pool. See
202 <refentrytitle>kdbus.item</refentrytitle>
203 <manvolnum>7</manvolnum>
210 <title>Broadcast, signal, filter, match</title>
212 Signals are messages that a receiver opts in for by installing a blob of
213 bytes, called a 'match'. Signal messages must always carry a
214 counter-part blob, called a 'filter', and signals are only delivered to
215 peers which have a match that white-lists the message's filter. Senders
216 of signal messages can use either a single connection ID as receiver,
217 or the special connection ID
218 <constant>KDBUS_DST_ID_BROADCAST</constant> to potentially send it to
219 all connections of a bus, following the logic described above. See
221 <refentrytitle>kdbus.match</refentrytitle>
222 <manvolnum>7</manvolnum>
226 <refentrytitle>kdbus.message</refentrytitle>
227 <manvolnum>7</manvolnum>
234 <title>Policy</title>
236 A policy is a set of rules that define which connections can see, talk
237 to, or register a well-known name on the bus. A policy is attached to
238 buses and custom endpoints, and modified by policy holder connections or
239 owners of custom endpoints. See
241 <refentrytitle>kdbus.policy</refentrytitle>
242 <manvolnum>7</manvolnum>
249 <title>Privileged bus users</title>
251 A user connecting to the bus is considered privileged if it is either
252 the creator of the bus, or if it has the CAP_IPC_OWNER capability flag
255 <refentrytitle>kdbus.connection</refentrytitle>
256 <manvolnum>7</manvolnum>
264 <title>Bus Layout</title>
267 A <emphasis>bus</emphasis> provides and defines an environment that peers
268 can connect to for message interchange. A bus is created via the kdbus
269 control interface and can be modified by the bus creator. It applies the
270 policy that control all bus operations. The bus creator itself does not
271 participate as a peer. To establish a peer
272 <emphasis>connection</emphasis>, you have to open one of the
273 <emphasis>endpoints</emphasis> of a bus. Each bus provides a default
274 endpoint, but further endpoints can be created on-demand. Endpoints are
275 used to apply additional policies for all connections on this endpoint.
276 Thus, they provide additional filters to further restrict access of
277 specific connections to the bus.
281 Following, you can see an example bus layout:
284 <programlisting><![CDATA[
292 __________________/ \__________________
295 +----------+ +----------+
296 | Endpoint | | Endpoint |
297 +----------+ +----------+
298 _________/|\_________ _________/|\_________
302 Connection Connection Connection Connection Connection Connection
308 <title>Data structures and interconnections</title>
309 <programlisting><![CDATA[
310 +--------------------------------------------------------------------------+
311 | Domain (Mount Point) |
312 | /sys/fs/kdbus/control |
313 | +----------------------------------------------------------------------+ |
314 | | Bus (System Bus) | |
315 | | /sys/fs/kdbus/0-system/ | |
316 | | +-------------------------------+ +--------------------------------+ | |
317 | | | Endpoint | | Endpoint | | |
318 | | | /sys/fs/kdbus/0-system/bus | | /sys/fs/kdbus/0-system/ep.app | | |
319 | | +-------------------------------+ +--------------------------------+ | |
320 | | +--------------+ +--------------+ +--------------+ +---------------+ | |
321 | | | Connection | | Connection | | Connection | | Connection | | |
322 | | | :1.22 | | :1.25 | | :1.55 | | :1.81 | | |
323 | | +--------------+ +--------------+ +--------------+ +---------------+ | |
324 | +----------------------------------------------------------------------+ |
326 | +----------------------------------------------------------------------+ |
327 | | Bus (User Bus for UID 2702) | |
328 | | /sys/fs/kdbus/2702-user/ | |
329 | | +-------------------------------+ +--------------------------------+ | |
330 | | | Endpoint | | Endpoint | | |
331 | | | /sys/fs/kdbus/2702-user/bus | | /sys/fs/kdbus/2702-user/ep.app | | |
332 | | +-------------------------------+ +--------------------------------+ | |
333 | | +--------------+ +--------------+ +--------------+ +---------------+ | |
334 | | | Connection | | Connection | | Connection | | Connection | | |
335 | | | :1.22 | | :1.25 | | :1.55 | | :1.81 | | |
336 | | +--------------+ +--------------+ +--------------------------------+ | |
337 | +----------------------------------------------------------------------+ |
338 +--------------------------------------------------------------------------+
343 <title>Metadata</title>
346 <title>When metadata is collected</title>
348 kdbus records data about the system in certain situations. Such metadata
349 can refer to the currently active process (creds, PIDs, current user
350 groups, process names and its executable path, cgroup membership,
351 capabilities, security label and audit information), connection
352 information (description string, currently owned names) and time stamps.
355 Metadata is collected at the following times.
360 When a bus is created (<constant>KDBUS_CMD_MAKE</constant>),
361 information about the calling task is collected. This data is returned
362 by the kernel via the <constant>KDBUS_CMD_BUS_CREATOR_INFO</constant>
368 When a connection is created (<constant>KDBUS_CMD_HELLO</constant>),
369 information about the calling task is collected. Alternatively, a
370 privileged connection may provide 'faked' information about
371 credentials, PIDs and security labels which will be stored instead.
372 This data is returned by the kernel as information on a connection
373 (<constant>KDBUS_CMD_CONN_INFO</constant>). Only metadata that a
374 connection allowed to be sent (by setting its bit in
375 <varname>attach_flags_send</varname>) will be exported in this way.
381 When a message is sent (<constant>KDBUS_CMD_SEND</constant>),
382 information about the sending task and the sending connection is
383 collected. This metadata will be attached to the message when it
384 arrives in the receiver's pool. If the connection sending the
385 message installed faked credentials (see
387 <refentrytitle>kdbus.connection</refentrytitle>
388 <manvolnum>7</manvolnum>
390 the message will not be augmented by any information about the
391 currently sending task. Note that only metadata that was requested
392 by the receiving connection will be collected and attached to
399 Which metadata items are actually delivered depends on the following
405 (a) the system-wide kmod creds mask
406 (module parameter <varname>attach_flags_mask</varname>)
410 (b) the per-connection send creds mask, set by the connecting client
414 (c) the per-connection receive creds mask, set by the connecting
419 (d) the per-bus minimal creds mask, set by the bus creator
423 (e) the per-bus owner creds mask, set by the bus creator
427 (f) the mask specified when querying creds of a bus peer
431 (g) the mask specified when querying creds of a bus owner
436 With the following rules:
442 [1] The creds attached to messages are determined as
443 <constant>a & b & c</constant>.
449 [2] When connecting to a bus (<constant>KDBUS_CMD_HELLO</constant>),
450 and <constant>~b & d != 0</constant>, the call will fail with,
451 <errorcode>-1</errorcode>, and <varname>errno</varname> is set to
452 <constant>ECONNREFUSED</constant>.
458 [3] When querying creds of a bus peer, the creds returned are
459 <constant>a & b & f</constant>.
465 [4] When querying creds of a bus owner, the creds returned are
466 <constant>a & e & g</constant>.
472 Hence, programs might not always get all requested metadata items that
473 it requested. Code must be written so that it can cope with this fact.
478 <title>Benefits and heads-up</title>
480 Attaching metadata to messages has two major benefits.
485 Metadata attached to messages is gathered at the moment when the
486 other side calls <constant>KDBUS_CMD_SEND</constant>, or,
487 respectively, then the kernel notification is generated. There is
488 no need for the receiving peer to retrieve information about the
489 task in a second step. This closes a race gap that would otherwise
495 As metadata is delivered along with messages in the same data
496 blob, no extra calls to kernel functions etc. are needed to gather
502 Note, however, that collecting metadata does come at a price for
503 performance, so developers should carefully assess which metadata to
504 really opt-in for. For best practice, data that is not needed as part
505 of a message should not be requested by the connection in the first
506 place (see <varname>attach_flags_recv</varname> in
507 <constant>KDBUS_CMD_HELLO</constant>).
512 <title>Attach flags for metadata items</title>
514 To let the kernel know which metadata information to attach as items
515 to the aforementioned commands, it uses a bitmask. In those, the
516 following <emphasis>attach flags</emphasis> are currently supported.
517 Both the <varname>attach_flags_recv</varname> and
518 <varname>attach_flags_send</varname> fields of
519 <type>struct kdbus_cmd_hello</type>, as well as the payload of the
520 <constant>KDBUS_ITEM_ATTACH_FLAGS_SEND</constant> and
521 <constant>KDBUS_ITEM_ATTACH_FLAGS_RECV</constant> items follow this
527 <term><constant>KDBUS_ATTACH_TIMESTAMP</constant></term>
529 Requests the attachment of an item of type
530 <constant>KDBUS_ITEM_TIMESTAMP</constant>.
535 <term><constant>KDBUS_ATTACH_CREDS</constant></term>
537 Requests the attachment of an item of type
538 <constant>KDBUS_ITEM_CREDS</constant>.
543 <term><constant>KDBUS_ATTACH_PIDS</constant></term>
545 Requests the attachment of an item of type
546 <constant>KDBUS_ITEM_PIDS</constant>.
551 <term><constant>KDBUS_ATTACH_AUXGROUPS</constant></term>
553 Requests the attachment of an item of type
554 <constant>KDBUS_ITEM_AUXGROUPS</constant>.
559 <term><constant>KDBUS_ATTACH_NAMES</constant></term>
561 Requests the attachment of an item of type
562 <constant>KDBUS_ITEM_OWNED_NAME</constant>.
567 <term><constant>KDBUS_ATTACH_TID_COMM</constant></term>
569 Requests the attachment of an item of type
570 <constant>KDBUS_ITEM_TID_COMM</constant>.
575 <term><constant>KDBUS_ATTACH_PID_COMM</constant></term>
577 Requests the attachment of an item of type
578 <constant>KDBUS_ITEM_PID_COMM</constant>.
583 <term><constant>KDBUS_ATTACH_EXE</constant></term>
585 Requests the attachment of an item of type
586 <constant>KDBUS_ITEM_EXE</constant>.
591 <term><constant>KDBUS_ATTACH_CMDLINE</constant></term>
593 Requests the attachment of an item of type
594 <constant>KDBUS_ITEM_CMDLINE</constant>.
599 <term><constant>KDBUS_ATTACH_CGROUP</constant></term>
601 Requests the attachment of an item of type
602 <constant>KDBUS_ITEM_CGROUP</constant>.
607 <term><constant>KDBUS_ATTACH_CAPS</constant></term>
609 Requests the attachment of an item of type
610 <constant>KDBUS_ITEM_CAPS</constant>.
615 <term><constant>KDBUS_ATTACH_SECLABEL</constant></term>
617 Requests the attachment of an item of type
618 <constant>KDBUS_ITEM_SECLABEL</constant>.
623 <term><constant>KDBUS_ATTACH_AUDIT</constant></term>
625 Requests the attachment of an item of type
626 <constant>KDBUS_ITEM_AUDIT</constant>.
631 <term><constant>KDBUS_ATTACH_CONN_DESCRIPTION</constant></term>
633 Requests the attachment of an item of type
634 <constant>KDBUS_ITEM_CONN_DESCRIPTION</constant>.
642 <refentrytitle>kdbus.item</refentrytitle>
643 <manvolnum>7</manvolnum>
645 for detailed information about the layout and payload of items and
646 what metadata should be used to.
652 <title>The ioctl interface</title>
655 As stated in the 'synopsis' section above, application developers are
656 strongly encouraged to use kdbus through one of the high-level D-Bus
657 abstraction libraries, rather than using the low-level API directly.
661 kdbus on the kernel level exposes its functions exclusively through
663 <refentrytitle>ioctl</refentrytitle>
664 <manvolnum>2</manvolnum>
666 employed on file descriptors returned by
668 <refentrytitle>open</refentrytitle>
669 <manvolnum>2</manvolnum>
671 on pseudo files exposed by
673 <refentrytitle>kdbus.fs</refentrytitle>
674 <manvolnum>7</manvolnum>
678 Following is a list of all the ioctls, along with the command structs
679 they must be used with.
682 <informaltable frame="none">
683 <tgroup cols="3" colsep="1">
686 <entry>ioctl signature</entry>
687 <entry>command</entry>
688 <entry>transported struct</entry>
693 <entry><constant>0x40189500</constant></entry>
694 <entry><constant>KDBUS_CMD_BUS_MAKE</constant></entry>
695 <entry><type>struct kdbus_cmd *</type></entry>
697 <entry><constant>0x40189510</constant></entry>
698 <entry><constant>KDBUS_CMD_ENDPOINT_MAKE</constant></entry>
699 <entry><type>struct kdbus_cmd *</type></entry>
701 <entry><constant>0xc0609580</constant></entry>
702 <entry><constant>KDBUS_CMD_HELLO</constant></entry>
703 <entry><type>struct kdbus_cmd_hello *</type></entry>
705 <entry><constant>0x40189582</constant></entry>
706 <entry><constant>KDBUS_CMD_BYEBYE</constant></entry>
707 <entry><type>struct kdbus_cmd *</type></entry>
709 <entry><constant>0x40389590</constant></entry>
710 <entry><constant>KDBUS_CMD_SEND</constant></entry>
711 <entry><type>struct kdbus_cmd_send *</type></entry>
713 <entry><constant>0x80409591</constant></entry>
714 <entry><constant>KDBUS_CMD_RECV</constant></entry>
715 <entry><type>struct kdbus_cmd_recv *</type></entry>
717 <entry><constant>0x40209583</constant></entry>
718 <entry><constant>KDBUS_CMD_FREE</constant></entry>
719 <entry><type>struct kdbus_cmd_free *</type></entry>
721 <entry><constant>0x401895a0</constant></entry>
722 <entry><constant>KDBUS_CMD_NAME_ACQUIRE</constant></entry>
723 <entry><type>struct kdbus_cmd *</type></entry>
725 <entry><constant>0x401895a1</constant></entry>
726 <entry><constant>KDBUS_CMD_NAME_RELEASE</constant></entry>
727 <entry><type>struct kdbus_cmd *</type></entry>
729 <entry><constant>0x80289586</constant></entry>
730 <entry><constant>KDBUS_CMD_LIST</constant></entry>
731 <entry><type>struct kdbus_cmd_list *</type></entry>
733 <entry><constant>0x80309584</constant></entry>
734 <entry><constant>KDBUS_CMD_CONN_INFO</constant></entry>
735 <entry><type>struct kdbus_cmd_info *</type></entry>
737 <entry><constant>0x40209551</constant></entry>
738 <entry><constant>KDBUS_CMD_UPDATE</constant></entry>
739 <entry><type>struct kdbus_cmd *</type></entry>
741 <entry><constant>0x80309585</constant></entry>
742 <entry><constant>KDBUS_CMD_BUS_CREATOR_INFO</constant></entry>
743 <entry><type>struct kdbus_cmd_info *</type></entry>
745 <entry><constant>0x40189511</constant></entry>
746 <entry><constant>KDBUS_CMD_ENDPOINT_UPDATE</constant></entry>
747 <entry><type>struct kdbus_cmd *</type></entry>
749 <entry><constant>0x402095b0</constant></entry>
750 <entry><constant>KDBUS_CMD_MATCH_ADD</constant></entry>
751 <entry><type>struct kdbus_cmd_match *</type></entry>
753 <entry><constant>0x402095b1</constant></entry>
754 <entry><constant>KDBUS_CMD_MATCH_REMOVE</constant></entry>
755 <entry><type>struct kdbus_cmd_match *</type></entry>
762 Depending on the type of <emphasis>kdbusfs</emphasis> node that was
763 opened and what ioctls have been executed on a file descriptor before,
764 a different sub-set of ioctl commands is allowed.
770 On a file descriptor resulting from opening a
771 <emphasis>control node</emphasis>, only the
772 <constant>KDBUS_CMD_BUS_MAKE</constant> ioctl may be executed.
777 On a file descriptor resulting from opening a
778 <emphasis>bus endpoint node</emphasis>, only the
779 <constant>KDBUS_CMD_ENDPOINT_MAKE</constant> and
780 <constant>KDBUS_CMD_HELLO</constant> ioctls may be executed.
785 A file descriptor that was used to create a bus
786 (via <constant>KDBUS_CMD_BUS_MAKE</constant>) is called a
787 <emphasis>bus owner</emphasis> file descriptor. The bus will be
788 active as long as the file descriptor is kept open.
789 A bus owner file descriptor can not be used to
790 employ any further ioctls. As soon as
792 <refentrytitle>close</refentrytitle>
793 <manvolnum>2</manvolnum>
795 is called on it, the bus will be shut down, along will all associated
796 endpoints and connections. See
798 <refentrytitle>kdbus.bus</refentrytitle>
799 <manvolnum>7</manvolnum>
806 A file descriptor that was used to create an endpoint
807 (via <constant>KDBUS_CMD_ENDPOINT_MAKE</constant>) is called an
808 <emphasis>endpoint owner</emphasis> file descriptor. The endpoint
809 will be active as long as the file descriptor is kept open.
810 An endpoint owner file descriptor can only be used
811 to update details of an endpoint through the
812 <constant>KDBUS_CMD_ENDPOINT_UPDATE</constant> ioctl. As soon as
814 <refentrytitle>close</refentrytitle>
815 <manvolnum>2</manvolnum>
817 is called on it, the endpoint will be removed from the bus, and all
818 connections that are connected to the bus through it are shut down.
821 <refentrytitle>kdbus.endpoint</refentrytitle>
822 <manvolnum>7</manvolnum>
829 A file descriptor that was used to create a connection
830 (via <constant>KDBUS_CMD_HELLO</constant>) is called a
831 <emphasis>connection owner</emphasis> file descriptor. The connection
832 will be active as long as the file descriptor is kept open.
833 A connection owner file descriptor may be used to
834 issue any of the following ioctls.
839 <constant>KDBUS_CMD_UPDATE</constant> to tweak details of the
842 <refentrytitle>kdbus.connection</refentrytitle>
843 <manvolnum>7</manvolnum>
848 <constant>KDBUS_CMD_BYEBYE</constant> to shut down a connection
849 without losing messages. See
851 <refentrytitle>kdbus.connection</refentrytitle>
852 <manvolnum>7</manvolnum>
857 <constant>KDBUS_CMD_FREE</constant> to free a slice of memory in
860 <refentrytitle>kdbus.pool</refentrytitle>
861 <manvolnum>7</manvolnum>
866 <constant>KDBUS_CMD_CONN_INFO</constant> to retrieve information
867 on other connections on the bus. See
869 <refentrytitle>kdbus.connection</refentrytitle>
870 <manvolnum>7</manvolnum>
875 <constant>KDBUS_CMD_BUS_CREATOR_INFO</constant> to retrieve
876 information on the bus creator. See
878 <refentrytitle>kdbus.connection</refentrytitle>
879 <manvolnum>7</manvolnum>
884 <constant>KDBUS_CMD_LIST</constant> to retrieve a list of
885 currently active well-known names and unique IDs on the bus. See
887 <refentrytitle>kdbus.name</refentrytitle>
888 <manvolnum>7</manvolnum>
893 <constant>KDBUS_CMD_SEND</constant> and
894 <constant>KDBUS_CMD_RECV</constant> to send or receive a message.
897 <refentrytitle>kdbus.message</refentrytitle>
898 <manvolnum>7</manvolnum>
903 <constant>KDBUS_CMD_NAME_ACQUIRE</constant> and
904 <constant>KDBUS_CMD_NAME_RELEASE</constant> to acquire or release
905 a well-known name on the bus. See
907 <refentrytitle>kdbus.name</refentrytitle>
908 <manvolnum>7</manvolnum>
913 <constant>KDBUS_CMD_MATCH_ADD</constant> and
914 <constant>KDBUS_CMD_MATCH_REMOVE</constant> to add or remove
915 a match for signal messages. See
917 <refentrytitle>kdbus.match</refentrytitle>
918 <manvolnum>7</manvolnum>
926 These ioctls, along with the structs they transport, are explained in
927 detail in the other documents linked to in the "See Also" section below.
932 <title>See Also</title>
933 <simplelist type="inline">
936 <refentrytitle>kdbus.bus</refentrytitle>
937 <manvolnum>7</manvolnum>
942 <refentrytitle>kdbus.connection</refentrytitle>
943 <manvolnum>7</manvolnum>
948 <refentrytitle>kdbus.endpoint</refentrytitle>
949 <manvolnum>7</manvolnum>
954 <refentrytitle>kdbus.fs</refentrytitle>
955 <manvolnum>7</manvolnum>
960 <refentrytitle>kdbus.item</refentrytitle>
961 <manvolnum>7</manvolnum>
966 <refentrytitle>kdbus.message</refentrytitle>
967 <manvolnum>7</manvolnum>
972 <refentrytitle>kdbus.name</refentrytitle>
973 <manvolnum>7</manvolnum>
978 <refentrytitle>kdbus.pool</refentrytitle>
979 <manvolnum>7</manvolnum>
984 <refentrytitle>ioctl</refentrytitle>
985 <manvolnum>2</manvolnum>
990 <refentrytitle>mmap</refentrytitle>
991 <manvolnum>2</manvolnum>
996 <refentrytitle>open</refentrytitle>
997 <manvolnum>2</manvolnum>
1002 <refentrytitle>close</refentrytitle>
1003 <manvolnum>2</manvolnum>
1007 <ulink url="http://freedesktop.org/wiki/Software/dbus">D-Bus</ulink>