We should keep our options open, so that we can watch for POLLOUT later
on if we wish to. CUrrently this call will always return POLLIN however.
below.</para>
<para><function>sd_journal_get_events()</function>
below.</para>
<para><function>sd_journal_get_events()</function>
- will return the
- <citerefentry><refentrytitle>poll</refentrytitle><manvolnum>2</manvolnum></citerefentry>
- mask to wait for. This function will return a
- combination of POLLIN and POLLOUT and similar to fill
- into the <literal>.events</literal> field of
+ will return the <function>poll()</function> mask to
+ wait for. This function will return a combination of
+ <literal>POLLIN</literal> and
+ <literal>POLLOUT</literal> and similar to fill into
+ the <literal>.events</literal> field of
<literal>struct pollfd</literal>.</para>
<para><function>sd_journal_reliable_fd()</function>
<literal>struct pollfd</literal>.</para>
<para><function>sd_journal_reliable_fd()</function>
<function>sd_journal_get_fd()</function> are
sufficient as only source for wake-ups.</para>
<function>sd_journal_get_fd()</function> are
sufficient as only source for wake-ups.</para>
- <para>After each <literal>poll()</literal> wake-up
+ <para>After each <function>poll()</function> wake-up
<function>sd_journal_process()</function> needs to be
called to process events. This call will also indicate
what kind of change has been detected (see below; note
<function>sd_journal_process()</function> needs to be
called to process events. This call will also indicate
what kind of change has been detected (see below; note
errno-style error code.</para>
<para><function>sd_journal_get_events()</function>
errno-style error code.</para>
<para><function>sd_journal_get_events()</function>
- returns a combination of POLLIN, POLLOUT and suchlike
- on success or a negative errno-style error
- code.</para>
+ returns a combination of <literal>POLLIN</literal>,
+ <literal>POLLOUT</literal> and suchlike on success or
+ a negative errno-style error code.</para>
<para><function>sd_journal_reliable_fd()</function>
returns a positive integer if the file descriptor
<para><function>sd_journal_reliable_fd()</function>
returns a positive integer if the file descriptor
<refname>sd_login_monitor_unref</refname>
<refname>sd_login_monitor_flush</refname>
<refname>sd_login_monitor_get_fd</refname>
<refname>sd_login_monitor_unref</refname>
<refname>sd_login_monitor_flush</refname>
<refname>sd_login_monitor_get_fd</refname>
+ <refname>sd_login_monitor_get_events</refname>
<refname>sd_login_monitor</refname>
<refpurpose>Monitor login sessions, seats and users</refpurpose>
</refnamediv>
<refname>sd_login_monitor</refname>
<refpurpose>Monitor login sessions, seats and users</refpurpose>
</refnamediv>
<paramdef>sd_login_monitor* <parameter>m</parameter></paramdef>
</funcprototype>
<paramdef>sd_login_monitor* <parameter>m</parameter></paramdef>
</funcprototype>
+ <funcprototype>
+ <funcdef>int <function>sd_login_monitor_get_events</function></funcdef>
+ <paramdef>sd_login_monitor* <parameter>m</parameter></paramdef>
+ </funcprototype>
+
</funcsynopsis>
</refsynopsisdiv>
</funcsynopsis>
</refsynopsisdiv>
application defined event loop, based around
<citerefentry><refentrytitle>poll</refentrytitle><manvolnum>2</manvolnum></citerefentry>
or a similar interface. The application should include
application defined event loop, based around
<citerefentry><refentrytitle>poll</refentrytitle><manvolnum>2</manvolnum></citerefentry>
or a similar interface. The application should include
- the returned file descriptor as wake up source for
- POLLIN events. Whenever a wake-up is triggered the
- file descriptor needs to be reset via
+ the returned file descriptor as wake-up source for the
+ events mask returned by
+ <function>sd_login_monitor_get_events()</function>. Whenever
+ a wake-up is triggered the file descriptor needs to be
+ reset via
<function>sd_login_monitor_flush()</function>. An
application needs to reread the login state with a
function like
<citerefentry><refentrytitle>sd_get_seats</refentrytitle><manvolnum>3</manvolnum></citerefentry>
or similar to determine what changed.</para>
<function>sd_login_monitor_flush()</function>. An
application needs to reread the login state with a
function like
<citerefentry><refentrytitle>sd_get_seats</refentrytitle><manvolnum>3</manvolnum></citerefentry>
or similar to determine what changed.</para>
+
+ <para><function>sd_login_monitor_get_events()</function>
+ will return the <function>poll()</function> mask to
+ wait for. This function will return a combination of
+ <literal>POLLIN</literal>, <literal>POLLOUT</literal>
+ and similar to fill into the
+ <literal>.events</literal> field of <literal>struct
+ pollfd</literal>.</para>
<function>sd_login_monitor_flush()</function> return 0
or a positive integer. On success
<function>sd_login_monitor_get_fd()</function> returns
<function>sd_login_monitor_flush()</function> return 0
or a positive integer. On success
<function>sd_login_monitor_get_fd()</function> returns
- a Unix file descriptor. On failure, these calls return
- a negative errno-style error code.</para>
+ a Unix file descriptor. On success
+ <function>sd_login_monitor_get_events()</function>
+ returns a combination of <literal>POLLIN</literal>,
+ <literal>POLLOUT</literal> and suchlike. On failure,
+ these calls return a negative errno-style error
+ code.</para>
<para><function>sd_login_monitor_unref()</function>
always returns NULL.</para>
<para><function>sd_login_monitor_unref()</function>
always returns NULL.</para>
<title>Notes</title>
<para>The <function>sd_login_monitor_new()</function>,
<title>Notes</title>
<para>The <function>sd_login_monitor_new()</function>,
- <function>sd_login_monitor_unref()</function>, <function>sd_login_monitor_flush()</function> and
- <function>sd_login_monitor_get_fd()</function> interfaces
- are available as shared library, which can be compiled
- and linked to with the
+ <function>sd_login_monitor_unref()</function>,
+ <function>sd_login_monitor_flush()</function>,
+ <function>sd_login_monitor_get_fd()</function> and
+ <function>sd_login_monitor_get_events()</function>
+ interfaces are available as shared library, which can
+ be compiled and linked to with the
<literal>libsystemd-login</literal>
<citerefentry><refentrytitle>pkg-config</refentrytitle><manvolnum>1</manvolnum></citerefentry>
file.</para>
<literal>libsystemd-login</literal>
<citerefentry><refentrytitle>pkg-config</refentrytitle><manvolnum>1</manvolnum></citerefentry>
file.</para>
<para>
<citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
<citerefentry><refentrytitle>sd-login</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
<para>
<citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
<citerefentry><refentrytitle>sd-login</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
- <citerefentry><refentrytitle>sd_get_seats</refentrytitle><manvolnum>3</manvolnum></citerefentry>
+ <citerefentry><refentrytitle>sd_get_seats</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
+ <citerefentry><refentrytitle>poll</refentrytitle><manvolnum>2</manvolnum></citerefentry>
global:
sd_session_get_tty;
} LIBSYSTEMD_LOGIN_186;
global:
sd_session_get_tty;
} LIBSYSTEMD_LOGIN_186;
+
+LIBSYSTEMD_LOGIN_201 {
+global:
+ sd_login_monitor_get_events;
+} LIBSYSTEMD_LOGIN_198;
#include <string.h>
#include <errno.h>
#include <sys/inotify.h>
#include <string.h>
#include <errno.h>
#include <sys/inotify.h>
#include "util.h"
#include "cgroup-util.h"
#include "util.h"
#include "cgroup-util.h"
return MONITOR_TO_FD(m);
}
return MONITOR_TO_FD(m);
}
+
+_public_ int sd_login_monitor_get_events(sd_login_monitor *m) {
+
+ if (!m)
+ return -EINVAL;
+
+ return POLLIN;
+}
zero(pollfd);
pollfd.fd = sd_login_monitor_get_fd(m);
zero(pollfd);
pollfd.fd = sd_login_monitor_get_fd(m);
- pollfd.events = POLLIN;
+ pollfd.events = sd_login_monitor_get_events(m);
for (n = 0; n < 5; n++) {
r = poll(&pollfd, 1, -1);
for (n = 0; n < 5; n++) {
r = poll(&pollfd, 1, -1);
/* Get FD from monitor */
int sd_login_monitor_get_fd(sd_login_monitor *m);
/* Get FD from monitor */
int sd_login_monitor_get_fd(sd_login_monitor *m);
+/* Get poll() mask to monitor */
+int sd_login_monitor_get_events(sd_login_monitor *m);
+
#ifdef __cplusplus
}
#endif
#ifdef __cplusplus
}
#endif