summaryrefslogtreecommitdiffstats
path: root/man/sd_bus_slot_set_destroy_callback.xml
blob: 404db6edbf332dfe6a5c13fc69c7d591c02da5ae (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
<?xml version='1.0'?>
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
  "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->

<refentry id="sd_bus_slot_set_destroy_callback"
          xmlns:xi="http://www.w3.org/2001/XInclude">

  <refentryinfo>
    <title>sd_bus_slot_set_destroy_callback</title>
    <productname>systemd</productname>
  </refentryinfo>

  <refmeta>
    <refentrytitle>sd_bus_slot_set_destroy_callback</refentrytitle>
    <manvolnum>3</manvolnum>
  </refmeta>

  <refnamediv>
    <refname>sd_bus_slot_set_destroy_callback</refname>
    <refname>sd_bus_slot_get_destroy_callback</refname>
    <refname>sd_bus_track_set_destroy_callback</refname>
    <refname>sd_bus_track_get_destroy_callback</refname>
    <refname>sd_bus_destroy_t</refname>

    <refpurpose>Define the callback function for resource cleanup</refpurpose>
  </refnamediv>

  <refsynopsisdiv>
    <funcsynopsis>
      <funcsynopsisinfo>#include &lt;systemd/sd-bus.h&gt;</funcsynopsisinfo>

      <funcprototype>
        <funcdef>typedef int (*<function>sd_bus_destroy_t</function>)</funcdef>
        <paramdef>void *<parameter>userdata</parameter></paramdef>
      </funcprototype>

      <funcprototype>
        <funcdef>int <function>sd_bus_slot_set_destroy_callback</function></funcdef>
        <paramdef>sd_bus_slot *<parameter>slot</parameter></paramdef>
        <paramdef>sd_bus_destroy_t <parameter>callback</parameter></paramdef>
      </funcprototype>

      <funcprototype>
        <funcdef>int <function>sd_bus_slot_get_destroy_callback</function></funcdef>
        <paramdef>sd_bus_slot *<parameter>slot</parameter></paramdef>
        <paramdef>sd_bus_destroy_t *<parameter>callback</parameter></paramdef>
      </funcprototype>

      <funcprototype>
        <funcdef>int <function>sd_bus_track_set_destroy_callback</function></funcdef>
        <paramdef>sd_bus_track *<parameter>track</parameter></paramdef>
        <paramdef>sd_bus_destroy_t <parameter>callback</parameter></paramdef>
      </funcprototype>

      <funcprototype>
        <funcdef>int <function>sd_bus_track_get_destroy_callback</function></funcdef>
        <paramdef>sd_bus_track *<parameter>track</parameter></paramdef>
        <paramdef>sd_bus_destroy_t *<parameter>callback</parameter></paramdef>
      </funcprototype>
    </funcsynopsis>
  </refsynopsisdiv>

  <refsect1>
    <title>Description</title>

    <para><function>sd_bus_slot_set_destroy_callback()</function> sets <parameter>callback</parameter> as the callback
    function to be called right before the bus slot object <parameter>slot</parameter> is deallocated. The
    <parameter>userdata</parameter> pointer from the slot object will be passed as the <parameter>userdata</parameter>
    parameter. This pointer can be set by an argument to the constructor functions, see
    <citerefentry><refentrytitle>sd_bus_add_match</refentrytitle><manvolnum>3</manvolnum></citerefentry>, or directly,
    see <citerefentry><refentrytitle>sd_bus_slot_set_userdata</refentrytitle><manvolnum>3</manvolnum></citerefentry>.
    This callback function is called even if <parameter>userdata</parameter> is <constant>NULL</constant>. Note that
    this callback is invoked at a time where the bus slot object itself is already invalidated, and executing
    operations or taking new references to the bus slot object is not permissible.</para>

    <para><function>sd_bus_slot_get_destroy_callback()</function> returns the current callback
    for <parameter>slot</parameter> in the <parameter>callback</parameter> parameter.</para>

    <para><function>sd_bus_track_set_destroy_callback()</function> and
    <function>sd_bus_track_get_destroy_callback()</function> provide equivalent functionality for the
    <parameter>userdata</parameter> pointer associated with bus peer tracking objects. For details about bus peer
    tracking objects, see
    <citerefentry><refentrytitle>sd_bus_track_new</refentrytitle><manvolnum>3</manvolnum></citerefentry>.</para>
  </refsect1>

  <refsect1>
    <title>Return Value</title>

    <para>On success, <function>sd_bus_slot_set_destroy_callback()</function> and
    <function>sd_bus_track_set_destroy_callback()</function> return 0 or a positive integer. On failure, they
    return a negative errno-style error code.</para>

    <para><function>sd_bus_slot_get_destroy_callback()</function> and
    <function>sd_bus_track_get_destroy_callback()</function> return positive if the destroy callback function
    is set, 0 if not. On failure, they return a negative errno-style error code.</para>

    <refsect2>
      <title>Errors</title>

      <para>Returned errors may indicate the following problems:</para>

      <variablelist>
        <varlistentry>
          <term><constant>-EINVAL</constant></term>

          <listitem><para>The <parameter>slot</parameter> or <parameter>track</parameter> parameter is
          <constant>NULL</constant>.</para></listitem>
        </varlistentry>
      </variablelist>
    </refsect2>
  </refsect1>

  <xi:include href="libsystemd-pkgconfig.xml" />

  <refsect1>
    <title>History</title>
    <para><function>sd_bus_destroy_t()</function>,
    <function>sd_bus_slot_set_destroy_callback()</function>,
    <function>sd_bus_slot_get_destroy_callback()</function>,
    <function>sd_bus_track_set_destroy_callback()</function>, and
    <function>sd_bus_track_get_destroy_callback()</function> were added in version 239.</para>
  </refsect1>

  <refsect1>
    <title>See Also</title>

    <para>
      <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
      <citerefentry><refentrytitle>sd-bus</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
      <citerefentry><refentrytitle>sd_bus_slot_set_floating</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
      <citerefentry><refentrytitle>sd_bus_add_match</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
      <citerefentry><refentrytitle>sd_bus_track_new</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
      <citerefentry><refentrytitle>sd_bus_slot_set_userdata</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
      <citerefentry><refentrytitle>sd_bus_track_set_userdata</refentrytitle><manvolnum>3</manvolnum></citerefentry>
    </para>
  </refsect1>

</refentry>