X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=man%2Fsd_login_monitor_new.xml;h=ba6623826fd114235e2283fa6759d66be398475d;hb=e6c253e363dee77ef7e5c5f44c4ca55cded3fd47;hp=ce171595417da9303bef8a120b2f24cfc32fb6ed;hpb=976c46f84f896782fa1e839904ab74cc4460c7b0;p=elogind.git
diff --git a/man/sd_login_monitor_new.xml b/man/sd_login_monitor_new.xml
index ce1715954..ba6623826 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,8 +47,10 @@
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
+ Monitor login sessions, seats, users and virtual machines/containers
@@ -57,23 +59,34 @@
int sd_login_monitor_new
- const char* category
- sd_login_monitor** ret
+ const char *category
+ sd_login_monitor **ret
- sd_login_monitor* sd_login_monitor_unref
- sd_login_monitor* m
+ sd_login_monitor *sd_login_monitor_unref
+ sd_login_monitor *m
int sd_login_monitor_flush
- sd_login_monitor* m
+ sd_login_monitor *m
int sd_login_monitor_get_fd
- sd_login_monitor* m
+ 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
@@ -83,23 +96,26 @@
Description
sd_login_monitor_new() may
- be used to monitor login session, users and seats. Via
- a monitor object a file descriptor can be integrated
- into an application defined event loop which is woken
- up each time a user logs in, logs out or a seat is
- added or removed, or a session, user, or seat changes
- state otherwise. The first parameter takes a string
- which can be either seat (to get
+ be used to monitor login sessions, users, seats, and
+ virtual machines/containers. Via a monitor object a
+ file descriptor can be integrated into an application
+ defined event loop which is woken up each time a user
+ logs in, logs out or a seat is added or removed, or a
+ session, user, seat or virtual machine/container
+ changes state otherwise. The first parameter takes a
+ string which can be seat (to get
only notifications about seats being added, removed or
changed), session (to get only
notifications about sessions being created or removed
- or changed) or uid (to get only
+ or changed), uid (to get only
notifications when a user changes state in respect to
- logins). If notifications shall be generated in all
- these conditions, NULL may be passed. Note that in
- future additional categories may be defined. The
- second parameter returns a monitor object and needs to
- be freed with the
+ logins) or machine (to get only
+ notifications when a virtual machine or container is
+ started or stopped). If notifications shall be
+ generated in all these conditions, NULL may be
+ passed. Note that in the future additional categories
+ may be defined. The second parameter returns a monitor
+ object and needs to be freed with the
sd_login_monitor_unref() call
after use.
@@ -113,7 +129,7 @@
object. Whenever an event causes the monitor to wake
up the event loop via the file descriptor this
function needs to be called to reset the wake-up
- state. If this call is not invoked the file descriptor
+ state. If this call is not invoked, the file descriptor
will immediately wake up the event loop again.
sd_login_monitor_get_fd()
@@ -122,41 +138,95 @@
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 is 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
+ 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.
+ always returns NULL.
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
- libsystemd-login
- pkg-config1
+ 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 a shared library, which can
+ be compiled and linked to with the
+ libsystemd pkg-config1
file.
@@ -166,7 +236,9 @@
systemd1,
sd-login3,
- sd_get_seats3
+ sd_get_seats3,
+ poll2,
+ clock_gettime2