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
|
<?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 <systemd/sd-bus.h></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>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>
|