X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=man%2Fsd_login_monitor_new.xml;h=b187ad0dbe9536d2e9adf4558849be97bd5d2f3e;hp=35cb6b368b28ab326210c9f645d37a0c1abbee55;hb=667c24a6a86a5a26a906b7477ae81dcf4c73e64e;hpb=bb31a4ac1997c189a344caf554f34c6aabc71aa7
diff --git a/man/sd_login_monitor_new.xml b/man/sd_login_monitor_new.xml
index 35cb6b368..b187ad0db 100644
--- a/man/sd_login_monitor_new.xml
+++ b/man/sd_login_monitor_new.xml
@@ -21,7 +21,7 @@
along with systemd; If not, see .
-->
-
+
sd_login_monitor_new
@@ -47,6 +47,8 @@
sd_login_monitor_unref
sd_login_monitor_flush
sd_login_monitor_get_fd
+ sd_login_monitor_get_events
+ sd_login_monitor_get_timeout
sd_login_monitor
Monitor login sessions, seats and users
@@ -76,6 +78,17 @@
sd_login_monitor* m
+
+ int sd_login_monitor_get_events
+ sd_login_monitor* m
+
+
+
+ int sd_login_monitor_get_timeout
+ sd_login_monitor* m
+ uint64_t* timeout_usec
+
+
@@ -122,26 +135,78 @@
application defined event loop, based around
poll2
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
+ sd_login_monitor_get_events(). It
+ should pass a timeout value as returned by
+ sd_login_monitor_get_timeout(). Whenever
+ a wake-up is triggered the file descriptor needs to be
+ reset via
sd_login_monitor_flush(). An
application needs to reread the login state with a
function like
sd_get_seats3
or similar to determine what changed.
+
+ sd_login_monitor_get_events()
+ will return the poll() mask to
+ wait for. This function will return a combination of
+ POLLIN, POLLOUT
+ and similar to fill into the
+ .events field of struct
+ pollfd.
+
+ sd_login_monitor_get_timeout()
+ will return a timeout value for usage in
+ poll(). This returns a value in
+ microseconds since the epoch of CLOCK_MONOTONIC for
+ timing out poll() in
+ timeout_usec. See
+ clock_gettime2
+ for details about
+ CLOCK_MONOTONIC. If there's no
+ timeout to wait for this will fill in
+ (uint64_t) -1 instead. Note that
+ poll() takes a relative timeout
+ in milliseconds rather than an absolute timeout in
+ microseconds. To convert the absolute 'us' timeout into
+ relative 'ms', use code like the following:
+
+ uint64_t t;
+int msec;
+sd_login_monitor_get_timeout(m, &t);
+if (t == (uint64_t) -1)
+ msec = -1;
+else {
+ struct timespec ts;
+ uint64_t n;
+ clock_getttime(CLOCK_MONOTONIC, &ts);
+ n = (uint64_t) ts.tv_sec * 1000000 + ts.tv_nsec / 1000;
+ msec = t > n ? (int) ((t - n + 999) / 1000) : 0;
+}
+
+ The code above does not do any error checking
+ for brevity's sake. The calculated msec
+ integer can be passed directly as
+ poll()'s timeout
+ parameter.
Return Value
On success
- sd_login_monitor_new() and
- sd_login_monitor_flush() return 0
- or a positive integer. On success
+ sd_login_monitor_new(),
+ sd_login_monitor_flush() and
+ sd_login_monitor_get_timeout()
+ return 0 or a positive integer. On success
sd_login_monitor_get_fd() returns
- a Unix file descriptor. On failure, these calls return
- a negative errno-style error code.
+ a Unix file descriptor. On success
+ sd_login_monitor_get_events()
+ returns a combination of POLLIN,
+ POLLOUT and suchlike. On failure,
+ these calls return a negative errno-style error
+ code.
sd_login_monitor_unref()
always returns NULL.
@@ -151,10 +216,13 @@
Notes
The sd_login_monitor_new(),
- sd_login_monitor_unref(), sd_login_monitor_flush() and
- sd_login_monitor_get_fd() interfaces
- are available as shared library, which can be compiled
- and linked to with the
+ sd_login_monitor_unref(),
+ sd_login_monitor_flush(),
+ sd_login_monitor_get_fd(),
+ sd_login_monitor_get_events() and
+ sd_login_monitor_get_timeout()
+ interfaces are available as shared library, which can
+ be compiled and linked to with the
libsystemd-login
pkg-config1
file.
@@ -166,7 +234,9 @@
systemd1,
sd-login3,
- sd_get_seats3
+ sd_get_seats3,
+ poll2,
+ clock_gettime2