3802a3d3d7af51ddff31943d5514382f01265770Lennart Poettering<?xml version='1.0'?> <!--*- Mode: nxml; nxml-child-indent: 2; indent-tabs-mode: nil -*-->
b408026b9899c1f9d155ac6d9f7bdc7f5cd3defbLennart Poettering<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
12b42c76672a66c2d4ea7212c14f8f1b5a62b78dTom Gundersen"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
b975b0d514321f169b3c4599a8ea92e13741b4e4Zbigniew Jędrzejewski-Szmek This file is part of systemd.
b975b0d514321f169b3c4599a8ea92e13741b4e4Zbigniew Jędrzejewski-Szmek Copyright 2014 Lennart Poettering
b975b0d514321f169b3c4599a8ea92e13741b4e4Zbigniew Jędrzejewski-Szmek systemd is free software; you can redistribute it and/or modify it
b975b0d514321f169b3c4599a8ea92e13741b4e4Zbigniew Jędrzejewski-Szmek under the terms of the GNU Lesser General Public License as published by
b975b0d514321f169b3c4599a8ea92e13741b4e4Zbigniew Jędrzejewski-Szmek the Free Software Foundation; either version 2.1 of the License, or
b975b0d514321f169b3c4599a8ea92e13741b4e4Zbigniew Jędrzejewski-Szmek (at your option) any later version.
b975b0d514321f169b3c4599a8ea92e13741b4e4Zbigniew Jędrzejewski-Szmek systemd is distributed in the hope that it will be useful, but
b975b0d514321f169b3c4599a8ea92e13741b4e4Zbigniew Jędrzejewski-Szmek WITHOUT ANY WARRANTY; without even the implied warranty of
b975b0d514321f169b3c4599a8ea92e13741b4e4Zbigniew Jędrzejewski-Szmek MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
b975b0d514321f169b3c4599a8ea92e13741b4e4Zbigniew Jędrzejewski-Szmek Lesser General Public License for more details.
b975b0d514321f169b3c4599a8ea92e13741b4e4Zbigniew Jędrzejewski-Szmek You should have received a copy of the GNU Lesser General Public License
b975b0d514321f169b3c4599a8ea92e13741b4e4Zbigniew Jędrzejewski-Szmek along with systemd; If not, see <http://www.gnu.org/licenses/>.
dc83f27a7cf03757dec11a69ec18504ad4ea8f89Lennart Poettering<refentry id="sd_event_add_time" xmlns:xi="http://www.w3.org/2001/XInclude">
b408026b9899c1f9d155ac6d9f7bdc7f5cd3defbLennart Poettering <refentryinfo>
b408026b9899c1f9d155ac6d9f7bdc7f5cd3defbLennart Poettering </authorgroup>
b408026b9899c1f9d155ac6d9f7bdc7f5cd3defbLennart Poettering </refentryinfo>
b408026b9899c1f9d155ac6d9f7bdc7f5cd3defbLennart Poettering <refentrytitle>sd_event_add_time</refentrytitle>
b408026b9899c1f9d155ac6d9f7bdc7f5cd3defbLennart Poettering <refname>sd_event_source_get_time</refname>
b408026b9899c1f9d155ac6d9f7bdc7f5cd3defbLennart Poettering <refname>sd_event_source_set_time</refname>
b408026b9899c1f9d155ac6d9f7bdc7f5cd3defbLennart Poettering <refname>sd_event_source_get_time_accuracy</refname>
b408026b9899c1f9d155ac6d9f7bdc7f5cd3defbLennart Poettering <refname>sd_event_source_set_time_accuracy</refname>
b408026b9899c1f9d155ac6d9f7bdc7f5cd3defbLennart Poettering <refname>sd_event_source_get_time_clock</refname>
dc83f27a7cf03757dec11a69ec18504ad4ea8f89Lennart Poettering <refname>sd_event_time_handler_t</refname>
b408026b9899c1f9d155ac6d9f7bdc7f5cd3defbLennart Poettering <refpurpose>Add a timer event source to an event loop</refpurpose>
b408026b9899c1f9d155ac6d9f7bdc7f5cd3defbLennart Poettering <refsynopsisdiv>
b408026b9899c1f9d155ac6d9f7bdc7f5cd3defbLennart Poettering <funcsynopsis>
dc83f27a7cf03757dec11a69ec18504ad4ea8f89Lennart Poettering <funcsynopsisinfo>#include <systemd/sd-event.h></funcsynopsisinfo>
dc83f27a7cf03757dec11a69ec18504ad4ea8f89Lennart Poettering <funcsynopsisinfo><token>typedef</token> struct sd_event_source sd_event_source;</funcsynopsisinfo>
dc83f27a7cf03757dec11a69ec18504ad4ea8f89Lennart Poettering <funcprototype>
dc83f27a7cf03757dec11a69ec18504ad4ea8f89Lennart Poettering <funcdef>typedef int (*<function>sd_event_time_handler_t</function>)</funcdef>
dc83f27a7cf03757dec11a69ec18504ad4ea8f89Lennart Poettering <paramdef>sd_event_source *<parameter>s</parameter></paramdef>
dc83f27a7cf03757dec11a69ec18504ad4ea8f89Lennart Poettering <paramdef>uint64_t <parameter>usec</parameter></paramdef>
dc83f27a7cf03757dec11a69ec18504ad4ea8f89Lennart Poettering <paramdef>void *<parameter>userdata</parameter></paramdef>
dc83f27a7cf03757dec11a69ec18504ad4ea8f89Lennart Poettering </funcprototype>
b408026b9899c1f9d155ac6d9f7bdc7f5cd3defbLennart Poettering <funcprototype>
b408026b9899c1f9d155ac6d9f7bdc7f5cd3defbLennart Poettering <funcdef>int <function>sd_event_add_time</function></funcdef>
b408026b9899c1f9d155ac6d9f7bdc7f5cd3defbLennart Poettering <paramdef>sd_event *<parameter>event</parameter></paramdef>
b408026b9899c1f9d155ac6d9f7bdc7f5cd3defbLennart Poettering <paramdef>sd_event_source **<parameter>source</parameter></paramdef>
b408026b9899c1f9d155ac6d9f7bdc7f5cd3defbLennart Poettering <paramdef>clockid_t <parameter>clock</parameter></paramdef>
b408026b9899c1f9d155ac6d9f7bdc7f5cd3defbLennart Poettering <paramdef>uint64_t <parameter>usec</parameter></paramdef>
b408026b9899c1f9d155ac6d9f7bdc7f5cd3defbLennart Poettering <paramdef>uint64_t <parameter>accuracy</parameter></paramdef>
b408026b9899c1f9d155ac6d9f7bdc7f5cd3defbLennart Poettering <paramdef>sd_event_time_handler_t <parameter>handler</parameter></paramdef>
3b3d7d069d10d53336dbada1c67f739e3492b218Jan Engelhardt <paramdef>void *<parameter>userdata</parameter></paramdef>
b408026b9899c1f9d155ac6d9f7bdc7f5cd3defbLennart Poettering </funcprototype>
b408026b9899c1f9d155ac6d9f7bdc7f5cd3defbLennart Poettering <funcprototype>
b408026b9899c1f9d155ac6d9f7bdc7f5cd3defbLennart Poettering <funcdef>int <function>sd_event_source_get_time</function></funcdef>
b408026b9899c1f9d155ac6d9f7bdc7f5cd3defbLennart Poettering <paramdef>sd_event_source *<parameter>source</parameter></paramdef>
dc83f27a7cf03757dec11a69ec18504ad4ea8f89Lennart Poettering <paramdef>uint64_t *<parameter>usec</parameter></paramdef>
b408026b9899c1f9d155ac6d9f7bdc7f5cd3defbLennart Poettering </funcprototype>
b408026b9899c1f9d155ac6d9f7bdc7f5cd3defbLennart Poettering <funcprototype>
b408026b9899c1f9d155ac6d9f7bdc7f5cd3defbLennart Poettering <funcdef>int <function>sd_event_source_set_time</function></funcdef>
b408026b9899c1f9d155ac6d9f7bdc7f5cd3defbLennart Poettering <paramdef>sd_event_source *<parameter>source</parameter></paramdef>
dc83f27a7cf03757dec11a69ec18504ad4ea8f89Lennart Poettering <paramdef>uint64_t <parameter>usec</parameter></paramdef>
b408026b9899c1f9d155ac6d9f7bdc7f5cd3defbLennart Poettering </funcprototype>
b408026b9899c1f9d155ac6d9f7bdc7f5cd3defbLennart Poettering <funcprototype>
b408026b9899c1f9d155ac6d9f7bdc7f5cd3defbLennart Poettering <funcdef>int <function>sd_event_source_get_time_accuracy</function></funcdef>
b408026b9899c1f9d155ac6d9f7bdc7f5cd3defbLennart Poettering <paramdef>sd_event_source *<parameter>source</parameter></paramdef>
dc83f27a7cf03757dec11a69ec18504ad4ea8f89Lennart Poettering <paramdef>uint64_t *<parameter>usec</parameter></paramdef>
b408026b9899c1f9d155ac6d9f7bdc7f5cd3defbLennart Poettering </funcprototype>
b408026b9899c1f9d155ac6d9f7bdc7f5cd3defbLennart Poettering <funcprototype>
b408026b9899c1f9d155ac6d9f7bdc7f5cd3defbLennart Poettering <funcdef>int <function>sd_event_source_set_time_accuracy</function></funcdef>
b408026b9899c1f9d155ac6d9f7bdc7f5cd3defbLennart Poettering <paramdef>sd_event_source *<parameter>source</parameter></paramdef>
dc83f27a7cf03757dec11a69ec18504ad4ea8f89Lennart Poettering <paramdef>uint64_t <parameter>usec</parameter></paramdef>
b408026b9899c1f9d155ac6d9f7bdc7f5cd3defbLennart Poettering </funcprototype>
b408026b9899c1f9d155ac6d9f7bdc7f5cd3defbLennart Poettering <funcprototype>
b408026b9899c1f9d155ac6d9f7bdc7f5cd3defbLennart Poettering <funcdef>int <function>sd_event_source_get_time_clock</function></funcdef>
b408026b9899c1f9d155ac6d9f7bdc7f5cd3defbLennart Poettering <paramdef>sd_event_source *<parameter>source</parameter></paramdef>
b408026b9899c1f9d155ac6d9f7bdc7f5cd3defbLennart Poettering <paramdef>clockid_t *<parameter>clock</parameter></paramdef>
b408026b9899c1f9d155ac6d9f7bdc7f5cd3defbLennart Poettering </funcprototype>
b408026b9899c1f9d155ac6d9f7bdc7f5cd3defbLennart Poettering </funcsynopsis>
b408026b9899c1f9d155ac6d9f7bdc7f5cd3defbLennart Poettering </refsynopsisdiv>
393003e1debf7c7f75beaacbd532b92c3e3dc729Lennart Poettering <para><function>sd_event_add_time()</function> adds a new timer event source to an event loop. The event loop
393003e1debf7c7f75beaacbd532b92c3e3dc729Lennart Poettering object is specified in the <parameter>event</parameter> parameter, the event source object is returned in the
393003e1debf7c7f75beaacbd532b92c3e3dc729Lennart Poettering <parameter>source</parameter> parameter. The <parameter>clock</parameter> parameter takes a clock identifier, one
393003e1debf7c7f75beaacbd532b92c3e3dc729Lennart Poettering of <constant>CLOCK_REALTIME</constant>, <constant>CLOCK_MONOTONIC</constant>, <constant>CLOCK_BOOTTIME</constant>,
393003e1debf7c7f75beaacbd532b92c3e3dc729Lennart Poettering <constant>CLOCK_REALTIME_ALARM</constant>, or <constant>CLOCK_BOOTTIME_ALARM</constant>. See
393003e1debf7c7f75beaacbd532b92c3e3dc729Lennart Poettering <citerefentry><refentrytitle>timerfd_create</refentrytitle><manvolnum>2</manvolnum></citerefentry> for details
393003e1debf7c7f75beaacbd532b92c3e3dc729Lennart Poettering regarding the various types of clocks. The <parameter>usec</parameter> parameter specifies the earliest time, in
393003e1debf7c7f75beaacbd532b92c3e3dc729Lennart Poettering microseconds (µs), relative to the clock's epoch, when the timer shall be triggered. If a time already in the past
393003e1debf7c7f75beaacbd532b92c3e3dc729Lennart Poettering is specified (including <constant>0</constant>), this timer source "fires" immediately and is ready to be
393003e1debf7c7f75beaacbd532b92c3e3dc729Lennart Poettering dispatched. If the paramater is specified as <constant>UINT64_MAX</constant> the timer event will never elapse,
393003e1debf7c7f75beaacbd532b92c3e3dc729Lennart Poettering which may be used as an alternative to explicitly disabling a timer event source with
393003e1debf7c7f75beaacbd532b92c3e3dc729Lennart Poettering <citerefentry><refentrytitle>sd_event_source_set_enabled</refentrytitle><manvolnum>3</manvolnum></citerefentry>. The
393003e1debf7c7f75beaacbd532b92c3e3dc729Lennart Poettering <parameter>accuracy</parameter> parameter specifies an additional accuracy value in µs specifying how much the
393003e1debf7c7f75beaacbd532b92c3e3dc729Lennart Poettering timer event may be delayed. Use <constant>0</constant> to select the default accuracy (250ms). Use 1µs for maximum
393003e1debf7c7f75beaacbd532b92c3e3dc729Lennart Poettering accuracy. Consider specifying 60000000µs (1min) or larger for long-running events that may be delayed
393003e1debf7c7f75beaacbd532b92c3e3dc729Lennart Poettering substantially. Picking higher accuracy values allows the system to coalesce timer events more aggressively,
393003e1debf7c7f75beaacbd532b92c3e3dc729Lennart Poettering improving power efficiency. The <parameter>handler</parameter> parameter shall reference a function to call when
393003e1debf7c7f75beaacbd532b92c3e3dc729Lennart Poettering the timer elapses. The handler function will be passed the <parameter>userdata</parameter> pointer, which may be
393003e1debf7c7f75beaacbd532b92c3e3dc729Lennart Poettering chosen freely by the caller. The handler is also passed the configured trigger time, even if it is actually called
393003e1debf7c7f75beaacbd532b92c3e3dc729Lennart Poettering slightly later, subject to the specified accuracy value, the kernel timer slack (see
393003e1debf7c7f75beaacbd532b92c3e3dc729Lennart Poettering <citerefentry><refentrytitle>prctl</refentrytitle><manvolnum>2</manvolnum></citerefentry>), and additional
393003e1debf7c7f75beaacbd532b92c3e3dc729Lennart Poettering scheduling latencies. To query the actual time the handler was called use
dc83f27a7cf03757dec11a69ec18504ad4ea8f89Lennart Poettering <citerefentry><refentrytitle>sd_event_now</refentrytitle><manvolnum>3</manvolnum></citerefentry>.</para>
3144ebcad37422dd85220915d37e7e9eea36564aZbigniew Jędrzejewski-Szmek <para>By default, the timer will elapse once
3144ebcad37422dd85220915d37e7e9eea36564aZbigniew Jędrzejewski-Szmek (<constant>SD_EVENT_ONESHOT</constant>), but this may be changed
3144ebcad37422dd85220915d37e7e9eea36564aZbigniew Jędrzejewski-Szmek <citerefentry><refentrytitle>sd_event_source_set_enabled</refentrytitle><manvolnum>3</manvolnum></citerefentry>.
3144ebcad37422dd85220915d37e7e9eea36564aZbigniew Jędrzejewski-Szmek If the handler function returns a negative error code, it will be
dc83f27a7cf03757dec11a69ec18504ad4ea8f89Lennart Poettering disabled after the invocation, even if the
dc83f27a7cf03757dec11a69ec18504ad4ea8f89Lennart Poettering <constant>SD_EVENT_ON</constant> mode was requested before. Note
dc83f27a7cf03757dec11a69ec18504ad4ea8f89Lennart Poettering that a timer event set to <constant>SD_EVENT_ON</constant> will
7f3fdb7f19a109fa3d1be92926bfe4cea1817da5Jakub Wilk fire continuously unless its configured time is updated using
dc83f27a7cf03757dec11a69ec18504ad4ea8f89Lennart Poettering <function>sd_event_source_set_time()</function>.
dc83f27a7cf03757dec11a69ec18504ad4ea8f89Lennart Poettering <para>To destroy an event source object use
dc83f27a7cf03757dec11a69ec18504ad4ea8f89Lennart Poettering <citerefentry><refentrytitle>sd_event_source_unref</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
dc83f27a7cf03757dec11a69ec18504ad4ea8f89Lennart Poettering but note that the event source is only removed from the event loop
dc83f27a7cf03757dec11a69ec18504ad4ea8f89Lennart Poettering when all references to the event source are dropped. To make sure
f23e83b156da8966e43e303dced5439503450d21Zbigniew Jędrzejewski-Szmek an event source does not fire anymore, even if it is still referenced,
f23e83b156da8966e43e303dced5439503450d21Zbigniew Jędrzejewski-Szmek disable the event source using
f23e83b156da8966e43e303dced5439503450d21Zbigniew Jędrzejewski-Szmek <citerefentry><refentrytitle>sd_event_source_set_enabled</refentrytitle><manvolnum>3</manvolnum></citerefentry>
f23e83b156da8966e43e303dced5439503450d21Zbigniew Jędrzejewski-Szmek with <constant>SD_EVENT_OFF</constant>.</para>
7f3fdb7f19a109fa3d1be92926bfe4cea1817da5Jakub Wilk <para>If the second parameter of
f23e83b156da8966e43e303dced5439503450d21Zbigniew Jędrzejewski-Szmek <function>sd_event_add_time()</function> is
f23e83b156da8966e43e303dced5439503450d21Zbigniew Jędrzejewski-Szmek <constant>NULL</constant> no reference to the event source object
f23e83b156da8966e43e303dced5439503450d21Zbigniew Jędrzejewski-Szmek is returned. In this case the event source is considered
f23e83b156da8966e43e303dced5439503450d21Zbigniew Jędrzejewski-Szmek "floating", and will be destroyed implicitly when the event loop
f23e83b156da8966e43e303dced5439503450d21Zbigniew Jędrzejewski-Szmek itself is destroyed.</para>
dc83f27a7cf03757dec11a69ec18504ad4ea8f89Lennart Poettering <para>If the <parameter>handler</parameter> to
f23e83b156da8966e43e303dced5439503450d21Zbigniew Jędrzejewski-Szmek <function>sd_event_add_time()</function> is
f23e83b156da8966e43e303dced5439503450d21Zbigniew Jędrzejewski-Szmek <constant>NULL</constant>, and the event source fires, this will
f23e83b156da8966e43e303dced5439503450d21Zbigniew Jędrzejewski-Szmek be considered a request to exit the event loop. In this case, the
f23e83b156da8966e43e303dced5439503450d21Zbigniew Jędrzejewski-Szmek <parameter>userdata</parameter> parameter, cast to an integer, is
f23e83b156da8966e43e303dced5439503450d21Zbigniew Jędrzejewski-Szmek used for the exit code passed to
dc83f27a7cf03757dec11a69ec18504ad4ea8f89Lennart Poettering <citerefentry><refentrytitle>sd_event_exit</refentrytitle><manvolnum>3</manvolnum></citerefentry>.</para>
dc83f27a7cf03757dec11a69ec18504ad4ea8f89Lennart Poettering <para>Use <constant>CLOCK_BOOTTIME_ALARM</constant> and
dc83f27a7cf03757dec11a69ec18504ad4ea8f89Lennart Poettering <constant>CLOCK_REALTIME_ALARM</constant> to define event sources
dc83f27a7cf03757dec11a69ec18504ad4ea8f89Lennart Poettering that may wake up the system from suspend.</para>
dc83f27a7cf03757dec11a69ec18504ad4ea8f89Lennart Poettering <para>In order to set up relative timers (that is, relative to the
dc83f27a7cf03757dec11a69ec18504ad4ea8f89Lennart Poettering current time), retrieve the current time via
dc83f27a7cf03757dec11a69ec18504ad4ea8f89Lennart Poettering <citerefentry><refentrytitle>sd_event_now</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
f23e83b156da8966e43e303dced5439503450d21Zbigniew Jędrzejewski-Szmek add the desired timespan to it, and use the result as
dc83f27a7cf03757dec11a69ec18504ad4ea8f89Lennart Poettering the <parameter>usec</parameter> parameter to
dc83f27a7cf03757dec11a69ec18504ad4ea8f89Lennart Poettering <function>sd_event_add_time()</function>.</para>
dc83f27a7cf03757dec11a69ec18504ad4ea8f89Lennart Poettering <para>In order to set up repetitive timers (that is, timers that
dc83f27a7cf03757dec11a69ec18504ad4ea8f89Lennart Poettering are triggered in regular intervals), set up the timer normally,
dc83f27a7cf03757dec11a69ec18504ad4ea8f89Lennart Poettering for the first invocation. Each time the event handler is invoked,
dc83f27a7cf03757dec11a69ec18504ad4ea8f89Lennart Poettering update the timer's trigger time with
dc83f27a7cf03757dec11a69ec18504ad4ea8f89Lennart Poettering <citerefentry><refentrytitle>sd_event_source_set_time</refentrytitle><manvolnum>3</manvolnum></citerefentry> for the next timer
dc83f27a7cf03757dec11a69ec18504ad4ea8f89Lennart Poettering iteration, and reenable the timer using
dc83f27a7cf03757dec11a69ec18504ad4ea8f89Lennart Poettering <function>sd_event_source_set_enabled()</function>. To calculate
dc83f27a7cf03757dec11a69ec18504ad4ea8f89Lennart Poettering the next point in time to pass to
dc83f27a7cf03757dec11a69ec18504ad4ea8f89Lennart Poettering <function>sd_event_source_set_time()</function>, either use as
dc83f27a7cf03757dec11a69ec18504ad4ea8f89Lennart Poettering base the <parameter>usec</parameter> parameter passed to the timer
dc83f27a7cf03757dec11a69ec18504ad4ea8f89Lennart Poettering callback, or the timestamp returned by
dc83f27a7cf03757dec11a69ec18504ad4ea8f89Lennart Poettering <function>sd_event_now()</function>. In the former case timer
dc83f27a7cf03757dec11a69ec18504ad4ea8f89Lennart Poettering events will be regular, while in the latter case the scheduling
dc83f27a7cf03757dec11a69ec18504ad4ea8f89Lennart Poettering latency will keep accumulating on the timer.</para>
b408026b9899c1f9d155ac6d9f7bdc7f5cd3defbLennart Poettering <para><function>sd_event_source_get_time()</function> retrieves
f23e83b156da8966e43e303dced5439503450d21Zbigniew Jędrzejewski-Szmek the configured time value of an event source created
b408026b9899c1f9d155ac6d9f7bdc7f5cd3defbLennart Poettering previously with <function>sd_event_add_time()</function>. It takes
b408026b9899c1f9d155ac6d9f7bdc7f5cd3defbLennart Poettering the event source object and a pointer to a variable to store the
f23e83b156da8966e43e303dced5439503450d21Zbigniew Jędrzejewski-Szmek time in, relative to the selected clock's epoch, in µs.</para>
b408026b9899c1f9d155ac6d9f7bdc7f5cd3defbLennart Poettering <para><function>sd_event_source_set_time()</function> changes the
f23e83b156da8966e43e303dced5439503450d21Zbigniew Jędrzejewski-Szmek time of an event source created previously with
f23e83b156da8966e43e303dced5439503450d21Zbigniew Jędrzejewski-Szmek <function>sd_event_add_time()</function>. It takes the event
f23e83b156da8966e43e303dced5439503450d21Zbigniew Jędrzejewski-Szmek source object and a time relative to the selected clock's epoch,
b408026b9899c1f9d155ac6d9f7bdc7f5cd3defbLennart Poettering <para><function>sd_event_source_get_time_accuracy()</function>
f23e83b156da8966e43e303dced5439503450d21Zbigniew Jędrzejewski-Szmek retrieves the configured accuracy value of a event source
b408026b9899c1f9d155ac6d9f7bdc7f5cd3defbLennart Poettering created previously with <function>sd_event_add_time()</function>. It
b408026b9899c1f9d155ac6d9f7bdc7f5cd3defbLennart Poettering takes the event source object and a pointer to a variable to store
f23e83b156da8966e43e303dced5439503450d21Zbigniew Jędrzejewski-Szmek the accuracy in. The accuracy is specified in µs.</para>
b408026b9899c1f9d155ac6d9f7bdc7f5cd3defbLennart Poettering <para><function>sd_event_source_set_time_accuracy()</function>
b408026b9899c1f9d155ac6d9f7bdc7f5cd3defbLennart Poettering changes the configured accuracy of a timer event source created
b408026b9899c1f9d155ac6d9f7bdc7f5cd3defbLennart Poettering previously with <function>sd_event_add_time()</function>. It takes
f23e83b156da8966e43e303dced5439503450d21Zbigniew Jędrzejewski-Szmek the event source object and accuracy, in µs.</para>
b408026b9899c1f9d155ac6d9f7bdc7f5cd3defbLennart Poettering <para><function>sd_event_source_get_time_clock()</function>
f23e83b156da8966e43e303dced5439503450d21Zbigniew Jędrzejewski-Szmek retrieves the configured clock of a event source created
b408026b9899c1f9d155ac6d9f7bdc7f5cd3defbLennart Poettering previously with <function>sd_event_add_time()</function>. It takes
b408026b9899c1f9d155ac6d9f7bdc7f5cd3defbLennart Poettering the event source object and a pointer to a variable to store the
b408026b9899c1f9d155ac6d9f7bdc7f5cd3defbLennart Poettering clock identifier in.</para>
b408026b9899c1f9d155ac6d9f7bdc7f5cd3defbLennart Poettering <para>On success, these functions return 0 or a positive
b408026b9899c1f9d155ac6d9f7bdc7f5cd3defbLennart Poettering integer. On failure, they return a negative errno-style error
f23e83b156da8966e43e303dced5439503450d21Zbigniew Jędrzejewski-Szmek <para>Returned values may indicate the following problems:</para>
b408026b9899c1f9d155ac6d9f7bdc7f5cd3defbLennart Poettering <variablelist>
b408026b9899c1f9d155ac6d9f7bdc7f5cd3defbLennart Poettering <varlistentry>
8474b70c3a3842cdf3d51f331dd117ab6421f6d0Zbigniew Jędrzejewski-Szmek <term><constant>-ENOMEM</constant></term>
3144ebcad37422dd85220915d37e7e9eea36564aZbigniew Jędrzejewski-Szmek <listitem><para>Not enough memory to allocate an object.</para></listitem>
b408026b9899c1f9d155ac6d9f7bdc7f5cd3defbLennart Poettering </varlistentry>
b408026b9899c1f9d155ac6d9f7bdc7f5cd3defbLennart Poettering <varlistentry>
8474b70c3a3842cdf3d51f331dd117ab6421f6d0Zbigniew Jędrzejewski-Szmek <term><constant>-EINVAL</constant></term>
b408026b9899c1f9d155ac6d9f7bdc7f5cd3defbLennart Poettering <listitem><para>An invalid argument has been passed.</para></listitem>
b408026b9899c1f9d155ac6d9f7bdc7f5cd3defbLennart Poettering </varlistentry>
b408026b9899c1f9d155ac6d9f7bdc7f5cd3defbLennart Poettering <varlistentry>
8474b70c3a3842cdf3d51f331dd117ab6421f6d0Zbigniew Jędrzejewski-Szmek <term><constant>-ESTALE</constant></term>
b408026b9899c1f9d155ac6d9f7bdc7f5cd3defbLennart Poettering <listitem><para>The event loop is already terminated.</para></listitem>
b408026b9899c1f9d155ac6d9f7bdc7f5cd3defbLennart Poettering </varlistentry>
b408026b9899c1f9d155ac6d9f7bdc7f5cd3defbLennart Poettering <varlistentry>
8474b70c3a3842cdf3d51f331dd117ab6421f6d0Zbigniew Jędrzejewski-Szmek <term><constant>-ECHILD</constant></term>
b408026b9899c1f9d155ac6d9f7bdc7f5cd3defbLennart Poettering <listitem><para>The event loop has been created in a different process.</para></listitem>
b408026b9899c1f9d155ac6d9f7bdc7f5cd3defbLennart Poettering </varlistentry>
b408026b9899c1f9d155ac6d9f7bdc7f5cd3defbLennart Poettering <varlistentry>
15411c0cb1192799b37ec8f25d6f30e8d7292fc6David Herrmann <term><constant>-EOPNOTSUPP</constant></term>
b408026b9899c1f9d155ac6d9f7bdc7f5cd3defbLennart Poettering <listitem><para>The selected clock is not supported by the event loop implementation.</para></listitem>
b408026b9899c1f9d155ac6d9f7bdc7f5cd3defbLennart Poettering </varlistentry>
dc83f27a7cf03757dec11a69ec18504ad4ea8f89Lennart Poettering <varlistentry>
dc83f27a7cf03757dec11a69ec18504ad4ea8f89Lennart Poettering <listitem><para>The passed event source is not a timer event source.</para></listitem>
dc83f27a7cf03757dec11a69ec18504ad4ea8f89Lennart Poettering </varlistentry>
dc83f27a7cf03757dec11a69ec18504ad4ea8f89Lennart Poettering </variablelist>
dc83f27a7cf03757dec11a69ec18504ad4ea8f89Lennart Poettering <xi:include href="libsystemd-pkgconfig.xml" />
b408026b9899c1f9d155ac6d9f7bdc7f5cd3defbLennart Poettering <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
b408026b9899c1f9d155ac6d9f7bdc7f5cd3defbLennart Poettering <citerefentry><refentrytitle>sd-event</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
b408026b9899c1f9d155ac6d9f7bdc7f5cd3defbLennart Poettering <citerefentry><refentrytitle>sd_event_new</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
dc83f27a7cf03757dec11a69ec18504ad4ea8f89Lennart Poettering <citerefentry><refentrytitle>sd_event_now</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
dc83f27a7cf03757dec11a69ec18504ad4ea8f89Lennart Poettering <citerefentry><refentrytitle>sd_event_add_io</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
3144ebcad37422dd85220915d37e7e9eea36564aZbigniew Jędrzejewski-Szmek <citerefentry><refentrytitle>sd_event_add_signal</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
edf2573743b25273bee020230a60f1a054b8ec60Zbigniew Jędrzejewski-Szmek <citerefentry><refentrytitle>sd_event_add_child</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
4dfefc1914bad6a025e2d6738999e45b74715002Zbigniew Jędrzejewski-Szmek <citerefentry><refentrytitle>sd_event_add_defer</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
dc83f27a7cf03757dec11a69ec18504ad4ea8f89Lennart Poettering <citerefentry><refentrytitle>sd_event_source_set_enabled</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
dc83f27a7cf03757dec11a69ec18504ad4ea8f89Lennart Poettering <citerefentry><refentrytitle>sd_event_source_set_priority</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
dc83f27a7cf03757dec11a69ec18504ad4ea8f89Lennart Poettering <citerefentry><refentrytitle>sd_event_source_set_userdata</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
dc83f27a7cf03757dec11a69ec18504ad4ea8f89Lennart Poettering <citerefentry><refentrytitle>sd_event_source_set_description</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
dc83f27a7cf03757dec11a69ec18504ad4ea8f89Lennart Poettering <citerefentry project='man-pages'><refentrytitle>clock_gettime</refentrytitle><manvolnum>2</manvolnum></citerefentry>,
dc83f27a7cf03757dec11a69ec18504ad4ea8f89Lennart Poettering <citerefentry project='man-pages'><refentrytitle>timerfd_create</refentrytitle><manvolnum>2</manvolnum></citerefentry>,
dc83f27a7cf03757dec11a69ec18504ad4ea8f89Lennart Poettering <citerefentry project='man-pages'><refentrytitle>prctl</refentrytitle><manvolnum>2</manvolnum></citerefentry>