summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--man/sd_journal_get_fd.xml18
-rw-r--r--man/sd_login_monitor_new.xml43
-rw-r--r--src/login/libsystemd-login.sym5
-rw-r--r--src/login/sd-login.c9
-rw-r--r--src/login/test-login.c2
-rw-r--r--src/systemd/sd-login.h3
6 files changed, 60 insertions, 20 deletions
diff --git a/man/sd_journal_get_fd.xml b/man/sd_journal_get_fd.xml
index e57431ea9e..f29aeaab23 100644
--- a/man/sd_journal_get_fd.xml
+++ b/man/sd_journal_get_fd.xml
@@ -115,11 +115,11 @@
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>
@@ -134,7 +134,7 @@
<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
@@ -169,9 +169,9 @@
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
diff --git a/man/sd_login_monitor_new.xml b/man/sd_login_monitor_new.xml
index 2c4d05dcb9..94428771a8 100644
--- a/man/sd_login_monitor_new.xml
+++ b/man/sd_login_monitor_new.xml
@@ -47,6 +47,7 @@
<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>
@@ -76,6 +77,11 @@
<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>
@@ -122,14 +128,24 @@
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>
+
+ <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>
</refsect1>
<refsect1>
@@ -140,8 +156,12 @@
<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>
@@ -151,10 +171,12 @@
<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>
@@ -166,7 +188,8 @@
<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>
</para>
</refsect1>
diff --git a/src/login/libsystemd-login.sym b/src/login/libsystemd-login.sym
index 272b0e2b52..55a828773b 100644
--- a/src/login/libsystemd-login.sym
+++ b/src/login/libsystemd-login.sym
@@ -58,3 +58,8 @@ LIBSYSTEMD_LOGIN_198 {
global:
sd_session_get_tty;
} LIBSYSTEMD_LOGIN_186;
+
+LIBSYSTEMD_LOGIN_201 {
+global:
+ sd_login_monitor_get_events;
+} LIBSYSTEMD_LOGIN_198;
diff --git a/src/login/sd-login.c b/src/login/sd-login.c
index 8867e8c8eb..861a57166d 100644
--- a/src/login/sd-login.c
+++ b/src/login/sd-login.c
@@ -23,6 +23,7 @@
#include <string.h>
#include <errno.h>
#include <sys/inotify.h>
+#include <sys/poll.h>
#include "util.h"
#include "cgroup-util.h"
@@ -797,3 +798,11 @@ _public_ int sd_login_monitor_get_fd(sd_login_monitor *m) {
return MONITOR_TO_FD(m);
}
+
+_public_ int sd_login_monitor_get_events(sd_login_monitor *m) {
+
+ if (!m)
+ return -EINVAL;
+
+ return POLLIN;
+}
diff --git a/src/login/test-login.c b/src/login/test-login.c
index 159ff3efc5..f639129636 100644
--- a/src/login/test-login.c
+++ b/src/login/test-login.c
@@ -185,7 +185,7 @@ int main(int argc, char* argv[]) {
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);
diff --git a/src/systemd/sd-login.h b/src/systemd/sd-login.h
index 3746b45cf3..57255bd4a9 100644
--- a/src/systemd/sd-login.h
+++ b/src/systemd/sd-login.h
@@ -156,6 +156,9 @@ int sd_login_monitor_flush(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