<?xml version='1.0'?> <!--*-nxml-*-->
<!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_journal_get_realtime_usec"
          xmlns:xi="http://www.w3.org/2001/XInclude">

  <refentryinfo>
    <title>sd_journal_get_realtime_usec</title>
    <productname>systemd</productname>
  </refentryinfo>

  <refmeta>
    <refentrytitle>sd_journal_get_realtime_usec</refentrytitle>
    <manvolnum>3</manvolnum>
  </refmeta>

  <refnamediv>
    <refname>sd_journal_get_realtime_usec</refname>
    <refname>sd_journal_get_monotonic_usec</refname>
    <refpurpose>Read timestamps from the current journal entry</refpurpose>
  </refnamediv>

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

      <funcprototype>
        <funcdef>int <function>sd_journal_get_realtime_usec</function></funcdef>
        <paramdef>sd_journal *<parameter>j</parameter></paramdef>
        <paramdef>uint64_t *<parameter>usec</parameter></paramdef>
      </funcprototype>

      <funcprototype>
        <funcdef>int <function>sd_journal_get_monotonic_usec</function></funcdef>
        <paramdef>sd_journal *<parameter>j</parameter></paramdef>
        <paramdef>uint64_t *<parameter>usec</parameter></paramdef>
        <paramdef>sd_id128_t *<parameter>boot_id</parameter></paramdef>
      </funcprototype>

    </funcsynopsis>
  </refsynopsisdiv>

  <refsect1>
    <title>Description</title>

    <para><function>sd_journal_get_realtime_usec()</function> gets the
    realtime (wallclock) timestamp of the current journal entry. It
    takes two arguments: the journal context object and a pointer to a
    64-bit unsigned integer to store the timestamp in. The timestamp
    is in microseconds since the epoch, i.e.
    <constant>CLOCK_REALTIME</constant>.</para>

    <para><function>sd_journal_get_monotonic_usec()</function> gets
    the monotonic timestamp of the current journal entry. It takes
    three arguments: the journal context object, a pointer to a 64-bit
    unsigned integer to store the timestamp in, as well as a 128-bit
    ID buffer to store the boot ID of the monotonic timestamp. The
    timestamp is in microseconds since boot-up of the specific boot,
    i.e. <constant>CLOCK_MONOTONIC</constant>. Since the monotonic
    clock begins new with every reboot, it only defines a well-defined
    point in time when used together with an identifier identifying
    the boot. See
    <citerefentry><refentrytitle>sd_id128_get_boot</refentrytitle><manvolnum>3</manvolnum></citerefentry>
    for more information. If the boot ID parameter is passed
    <constant>NULL</constant>, the function will fail if the monotonic
    timestamp of the current entry is not of the current system
    boot.</para>

    <para>Note that these functions will not work before
    <citerefentry><refentrytitle>sd_journal_next</refentrytitle><manvolnum>3</manvolnum></citerefentry>
    (or related call) has been called at least
    once, in order to position the read pointer at a valid entry.</para>
  </refsect1>

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

    <para><function>sd_journal_get_realtime_usec()</function> and
    <function>sd_journal_get_monotonic_usec()</function> returns 0 on
    success or a negative errno-style error code. If the boot ID
    parameter was passed <constant>NULL</constant> and the monotonic
    timestamp of the current journal entry is not of the current
    system boot, <constant>-ESTALE</constant> is returned by
    <function>sd_journal_get_monotonic_usec()</function>.</para>
  </refsect1>

  <refsect1>
    <title>Notes</title>

    <xi:include href="threads-aware.xml" xpointer="strict"/>

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

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

    <para>
      <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
      <citerefentry><refentrytitle>sd-journal</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
      <citerefentry><refentrytitle>sd_journal_open</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
      <citerefentry><refentrytitle>sd_journal_next</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
      <citerefentry><refentrytitle>sd_journal_get_data</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
      <citerefentry><refentrytitle>sd_id128_get_boot</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
      <citerefentry><refentrytitle>clock_gettime</refentrytitle><manvolnum>2</manvolnum></citerefentry>,
      <citerefentry><refentrytitle>sd_journal_get_cutoff_realtime_usec</refentrytitle><manvolnum>3</manvolnum></citerefentry>
    </para>
  </refsect1>

</refentry>
