diff options
Diffstat (limited to 'man/sd_bus_message_append_array.xml')
-rw-r--r-- | man/sd_bus_message_append_array.xml | 123 |
1 files changed, 73 insertions, 50 deletions
diff --git a/man/sd_bus_message_append_array.xml b/man/sd_bus_message_append_array.xml index c2adc6f43d..034466bf9c 100644 --- a/man/sd_bus_message_append_array.xml +++ b/man/sd_bus_message_append_array.xml @@ -49,7 +49,8 @@ <refname>sd_bus_message_append_array_iovec</refname> <refname>sd_bus_message_append_array_space</refname> - <refpurpose>Attach an array of items to a message</refpurpose> + <refpurpose>Appaned an array of fields to a D-Bus + message</refpurpose> </refnamediv> <refsynopsisdiv> @@ -69,6 +70,8 @@ <paramdef>sd_bus_message *<parameter>m</parameter></paramdef> <paramdef>char <parameter>type</parameter></paramdef> <paramdef>int <parameter>memfd</parameter></paramdef> + <paramdef>uint64_t <parameter>offset</parameter></paramdef> + <paramdef>uint64_t <parameter>size</parameter></paramdef> </funcprototype> <funcprototype> @@ -83,7 +86,7 @@ <funcdef>int sd_bus_message_append_array_space</funcdef> <paramdef>char <parameter>type</parameter></paramdef> <paramdef>size_t <parameter>size</parameter></paramdef> - <paramdef>char void **<parameter>ptr</parameter></paramdef> + <paramdef>void **<parameter>ptr</parameter></paramdef> </funcprototype> </funcsynopsis> </refsynopsisdiv> @@ -91,18 +94,19 @@ <refsect1> <title>Description</title> - <para>The <function>sd_bus_message_append_array</function> functionc - appends items to message <parameter>m</parameter> as the single - array. A container will be opened, items appended, and the - container closed. Parameter <parameter>type</parameter> determines - how pointer <parameter>p</parameter> is interpreted. + <para>The <function>sd_bus_message_append_array()</function> + function appends an array to a D-Bus message + <parameter>m</parameter>. A container will be opened, the array + contents appended, and the container closed. The parameter + <parameter>type</parameter> determines how the pointer + <parameter>p</parameter> is interpreted. <parameter>type</parameter> must be one of the "trivial" types <literal>y</literal>, <literal>n</literal>, <literal>q</literal>, <literal>i</literal>, <literal>u</literal>, <literal>x</literal>, <literal>t</literal>, <literal>d</literal> (but not - <literal>b</literal>), as defined by the - <ulink url="http://dbus.freedesktop.org/doc/dbus-specification.html#basic-types">Basic Types</ulink> - section of the D-Bus specification, and listed in + <literal>b</literal>), as defined by the <ulink + url="http://dbus.freedesktop.org/doc/dbus-specification.html#basic-types">Basic + Types</ulink> section of the D-Bus specification, and listed in <citerefentry><refentrytitle>sd_bus_message_append_basic</refentrytitle><manvolnum>3</manvolnum></citerefentry>. Pointer <parameter>p</parameter> must point to an array of size <parameter>size</parameter> bytes containing items of the @@ -110,50 +114,68 @@ multiple of the size of the type <parameter>type</parameter>. As a special case, <parameter>p</parameter> may be <constant>NULL</constant>, if <parameter>size</parameter> is 0. - </para> - - <para>The memory pointed at by <parameter>p</parameter> is copied - into the memory area containing the message and may be changed - after this call.</para> - - <para>The - <function>sd_bus_message_append_array_memfd</function> function appends - items to message <parameter>m</parameter>, similarly to - <function>sd_bus_message_append_array</function>. Contents of the - memory file descriptor <parameter>memfd</parameter> are used as - the contents of the array. Their size must be a multiple of the - size of the type <parameter>type</parameter>.</para> - - <para>The descriptor specified with <parameter>memfd</parameter> - will be sealed and cannot be modified after this call.</para> - - <para>The - <function>sd_bus_message_append_array_iovec</function> function appends - items to message <parameter>m</parameter>, similarly to - <function>sd_bus_message_append_array</function>. Contents of the - iovec <parameter>iov</parameter> are used as the contents of the - array. The total size of <parameter>iov</parameter> payload (the - sum of <structfield>iov_len</structfield> fields) must be a multiple - of the size of the type <parameter>type</parameter>.</para> - - <para>The <parameter>iov</parameter> argument must point to - <parameter>n</parameter> <structname>struct iovec</structname> - structures. Each structure may have the - <structname>iov_base</structname> field set, in which case the - memory pointed to will be copied into the message, or unset, in - which case a block of zeros of length + The memory pointed to by <parameter>p</parameter> is copied into + the memory area containing the message and stays in possession of + the caller. The caller may hence freely change the data after this + call without affecting the message the array was appended + to.</para> + + <para>The <function>sd_bus_message_append_array_memfd()</function> + function appends an array of a trivial type to message + <parameter>m</parameter>, similar to + <function>sd_bus_message_append_array()</function>. The contents + of the memory file descriptor <parameter>memfd</parameter> + starting at the specified offset and and of the specified size is + used as the contents of the array. The offset and size must be a + multiple of the size of the type + <parameter>type</parameter>. However, as a special exception, if + the offset is specified as zero and the size specified as + UINT64_MAX the full memory file descriptor contents is used. The + memory file descriptor is sealed by this call if it hasn't been + sealed yet, and cannot be modified a after this call. See + <citerefentry + project='man-pages'><refentrytitle>memfd_create</refentrytitle><manvolnum>2</manvolnum></citerefentry> + for details about memory file descriptors. Appending arrays with + memory file descriptors enables efficient zero-copy data transfer, + as the memory file descriptor may be passed as-is to the + destination, without copying the memory in it to the destination + process. Not all protocol transports support passing memory file + descriptors between participants, in which case this call will + automatically fall back to copying. Also, as memory file + descriptor passing is inefficient for smaller amounts of data + copying might still be enforced even where memory file descriptor + passing is supported.</para> + + <para>The <function>sd_bus_message_append_array_iovec()</function> + function appends an array of a trivial type to the message + <parameter>m</parameter>, similar to + <function>sd_bus_message_append_array()</function>. Contents of + the IO vector array <parameter>iov</parameter> are used as the + contents of the array. The total size of + <parameter>iov</parameter> payload (the sum of + <structfield>iov_len</structfield> fields) must be a multiple of + the size of the type <parameter>type</parameter>. The + <parameter>iov</parameter> argument must point to + <parameter>n</parameter> IO vector structures. Each structure may + have the <structname>iov_base</structname> field set, in which + case the memory pointed to will be copied into the message, or + unset (set to zero), in which case a block of zeros of length <structname>iov_len</structname> bytes will be inserted. The memory pointed at by <parameter>iov</parameter> may be changed after this call.</para> - <para>The - <function>sd_bus_message_append_array_space</function> function appends - space for an array of items to message <parameter>m</parameter>. - It behaves the same as - <function>sd_bus_message_append_array</function>, but instead - of copying items to the message, it returns a pointer to the - destination area to the caller in pointer <parameter>p</parameter>. - </para> + <para>The <function>sd_bus_message_append_array_space()</function> + function appends space for an array of a trivial type to message + <parameter>m</parameter>. It behaves the same as + <function>sd_bus_message_append_array()</function>, but instead of + copying items to the message, it returns a pointer to the + destination area to the caller in pointer + <parameter>p</parameter>. The caller should subsequently write the + array contents to this memory. Modifications of the memory + pointed to should only occur until the next operation on the bus + message is invoked, most imporantly the memory should not be + altered anymore when another field has been added to the message + or the message has been sealed.</para> </refsect1> <refsect1> @@ -183,6 +205,7 @@ <citerefentry><refentrytitle>sd-bus</refentrytitle><manvolnum>3</manvolnum></citerefentry>, <citerefentry><refentrytitle>sd_bus_message_append</refentrytitle><manvolnum>3</manvolnum></citerefentry>, <citerefentry><refentrytitle>sd_bus_message_append_basic</refentrytitle><manvolnum>3</manvolnum></citerefentry>, + <citerefentry project='man-pages'><refentrytitle>memfd_create</refentrytitle><manvolnum>2</manvolnum></citerefentry>, <ulink url="http://dbus.freedesktop.org/doc/dbus-specification.html">The D-Bus specification</ulink> </para> </refsect1> |