sd-event: add sd_event_source_disable_unref() helper
This commit is contained in:
parent
e36ddc67ac
commit
afd15bbb4b
|
@ -445,7 +445,9 @@ manpages = [
|
||||||
['sd_event_source_set_userdata', '3', ['sd_event_source_get_userdata'], ''],
|
['sd_event_source_set_userdata', '3', ['sd_event_source_get_userdata'], ''],
|
||||||
['sd_event_source_unref',
|
['sd_event_source_unref',
|
||||||
'3',
|
'3',
|
||||||
['sd_event_source_ref', 'sd_event_source_unrefp'],
|
['sd_event_source_disable_unref',
|
||||||
|
'sd_event_source_ref',
|
||||||
|
'sd_event_source_unrefp'],
|
||||||
''],
|
''],
|
||||||
['sd_event_wait',
|
['sd_event_wait',
|
||||||
'3',
|
'3',
|
||||||
|
|
|
@ -19,6 +19,7 @@
|
||||||
<refname>sd_event_source_unref</refname>
|
<refname>sd_event_source_unref</refname>
|
||||||
<refname>sd_event_source_unrefp</refname>
|
<refname>sd_event_source_unrefp</refname>
|
||||||
<refname>sd_event_source_ref</refname>
|
<refname>sd_event_source_ref</refname>
|
||||||
|
<refname>sd_event_source_disable_unref</refname>
|
||||||
|
|
||||||
<refpurpose>Increase or decrease event source reference counters</refpurpose>
|
<refpurpose>Increase or decrease event source reference counters</refpurpose>
|
||||||
</refnamediv>
|
</refnamediv>
|
||||||
|
@ -42,6 +43,10 @@
|
||||||
<paramdef>sd_event_source *<parameter>source</parameter></paramdef>
|
<paramdef>sd_event_source *<parameter>source</parameter></paramdef>
|
||||||
</funcprototype>
|
</funcprototype>
|
||||||
|
|
||||||
|
<funcprototype>
|
||||||
|
<funcdef>sd_event_source* <function>sd_event_source_disable_unref</function></funcdef>
|
||||||
|
<paramdef>sd_event_source *<parameter>source</parameter></paramdef>
|
||||||
|
</funcprototype>
|
||||||
</funcsynopsis>
|
</funcsynopsis>
|
||||||
</refsynopsisdiv>
|
</refsynopsisdiv>
|
||||||
|
|
||||||
|
@ -77,23 +82,26 @@
|
||||||
the passed event source object is
|
the passed event source object is
|
||||||
<constant>NULL</constant>.</para>
|
<constant>NULL</constant>.</para>
|
||||||
|
|
||||||
<para>Note that event source objects stay alive and may be
|
<para>Note that event source objects stay alive and may be dispatched as long as they have a reference
|
||||||
dispatched as long as they have a reference counter greater than
|
counter greater than zero. In order to drop a reference of an event source and make sure the associated
|
||||||
zero. In order to drop a reference of an event source and make
|
event source handler function is not called anymore it is recommended to combine a call of
|
||||||
sure the associated event source handler function is not called
|
|
||||||
anymore it is recommended to combine a call of
|
|
||||||
<function>sd_event_source_unref()</function> with a prior call to
|
<function>sd_event_source_unref()</function> with a prior call to
|
||||||
<function>sd_event_source_set_enabled()</function> with
|
<function>sd_event_source_set_enabled()</function> with <constant>SD_EVENT_OFF</constant> or call
|
||||||
<constant>SD_EVENT_OFF</constant>.</para>
|
<function>sd_event_source_disable_unref()</function>, see below.</para>
|
||||||
|
|
||||||
|
<para><function>sd_event_source_disable_unref()</function> combines a call to
|
||||||
|
<function>sd_event_source_set_enabled()</function> with <constant>SD_EVENT_OFF</constant> with
|
||||||
|
<function>sd_event_source_unref()</function>. This ensures that the source is disabled before the local
|
||||||
|
reference to it is lost. The <parameter>source</parameter> parameter is allowed to be
|
||||||
|
<constant>NULL</constant>.</para>
|
||||||
</refsect1>
|
</refsect1>
|
||||||
|
|
||||||
<refsect1>
|
<refsect1>
|
||||||
<title>Return Value</title>
|
<title>Return Value</title>
|
||||||
|
|
||||||
<para><function>sd_event_source_unref()</function> always returns
|
<para><function>sd_event_source_unref()</function> and
|
||||||
<constant>NULL</constant>.
|
<function>sd_event_source_disable_unref()</function> always return <constant>NULL</constant>.
|
||||||
<function>sd_event_source_ref()</function> always returns the
|
<function>sd_event_source_ref()</function> always returns the event source object passed in.</para>
|
||||||
event source object passed in.</para>
|
|
||||||
</refsect1>
|
</refsect1>
|
||||||
|
|
||||||
<xi:include href="libsystemd-pkgconfig.xml" />
|
<xi:include href="libsystemd-pkgconfig.xml" />
|
||||||
|
|
|
@ -680,4 +680,5 @@ global:
|
||||||
LIBSYSTEMD_243 {
|
LIBSYSTEMD_243 {
|
||||||
global:
|
global:
|
||||||
sd_bus_object_vtable_format;
|
sd_bus_object_vtable_format;
|
||||||
|
sd_event_source_disable_unref;
|
||||||
} LIBSYSTEMD_241;
|
} LIBSYSTEMD_241;
|
||||||
|
|
|
@ -339,6 +339,12 @@ fail:
|
||||||
|
|
||||||
DEFINE_PUBLIC_TRIVIAL_REF_UNREF_FUNC(sd_event, sd_event, event_free);
|
DEFINE_PUBLIC_TRIVIAL_REF_UNREF_FUNC(sd_event, sd_event, event_free);
|
||||||
|
|
||||||
|
_public_ sd_event_source* sd_event_source_disable_unref(sd_event_source *s) {
|
||||||
|
if (s)
|
||||||
|
(void) sd_event_source_set_enabled(s, SD_EVENT_OFF);
|
||||||
|
return sd_event_source_unref(s);
|
||||||
|
}
|
||||||
|
|
||||||
static bool event_pid_changed(sd_event *e) {
|
static bool event_pid_changed(sd_event *e) {
|
||||||
assert(e);
|
assert(e);
|
||||||
|
|
||||||
|
|
|
@ -113,6 +113,7 @@ int sd_event_get_iteration(sd_event *e, uint64_t *ret);
|
||||||
|
|
||||||
sd_event_source* sd_event_source_ref(sd_event_source *s);
|
sd_event_source* sd_event_source_ref(sd_event_source *s);
|
||||||
sd_event_source* sd_event_source_unref(sd_event_source *s);
|
sd_event_source* sd_event_source_unref(sd_event_source *s);
|
||||||
|
sd_event_source* sd_event_source_disable_unref(sd_event_source *s);
|
||||||
|
|
||||||
sd_event *sd_event_source_get_event(sd_event_source *s);
|
sd_event *sd_event_source_get_event(sd_event_source *s);
|
||||||
void* sd_event_source_get_userdata(sd_event_source *s);
|
void* sd_event_source_get_userdata(sd_event_source *s);
|
||||||
|
|
Loading…
Reference in a new issue