libvirt/tools
Daniel P. Berrangé dc0771cfa2 tools: rewrite interactive job monitoring logic
For long running jobs (save, managed save, dump & live migrate)
virsh runs a background thread for executing the job and then
has the main thread catch Ctrl-C for graceful shutdown, as well
as displaying progress info.

The monitoring code is written using poll, with a pipe used
to get the completion status from the thread. Using a pipe
and poll is problematic for Windows portability. This rewrites
the code to use a GMainLoop instance for monitoring stdin and
doing progress updates. The use of a pipe is entirely eliminated,
instead there is just a shared variable between both threads
containing the job completion status.

No mutex locking is used because the background thread writes
to the variable only when the main loop is still running,
while the foreground thread only reads it after the main loop
has exited.

Reviewed-by: Pavel Hrdina <phrdina@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2020-02-07 15:03:53 +00:00
..
bash-completion tools: Provide bash autompletion file 2018-01-11 18:53:04 +01:00
nss build: generate configmake.h in root directory 2020-01-29 14:51:39 +00:00
wireshark replace use of gnulib snprintf by g_snprintf 2019-11-15 15:07:40 +01:00
Makefile.am build: Drop execute permissions on virsh bash completion command 2020-01-31 08:49:04 -07:00
libvirt-guests.service.in build: don't hardcode /etc in the config related files 2019-08-09 14:06:31 +01:00
libvirt-guests.sh.in tools: do not loop in libvirt-guests test_connect 2019-12-16 10:10:49 +00:00
libvirt-guests.sysconf lxc: allow use of lxc:///system URI as preferred format 2018-04-12 16:52:01 +01:00
libvirt_recover_xattrs.sh security_util: Remove stale XATTRs 2019-08-22 17:05:17 +02:00
libvirt_win_icon_16x16.ico Move virsh into tools/ directory 2009-09-21 14:41:45 +01:00
libvirt_win_icon_32x32.ico Move virsh into tools/ directory 2009-09-21 14:41:45 +01:00
libvirt_win_icon_48x48.ico Move virsh into tools/ directory 2009-09-21 14:41:45 +01:00
libvirt_win_icon_64x64.ico Move virsh into tools/ directory 2009-09-21 14:41:45 +01:00
virsh-backup.c backup: Implement virsh support for backup 2019-12-10 12:41:56 +01:00
virsh-backup.h backup: Implement virsh support for backup 2019-12-10 12:41:56 +01:00
virsh-checkpoint.c src: replace gmtime_r/localtime_r/strftime with GDateTime 2020-01-17 10:02:01 +00:00
virsh-checkpoint.h backup: Implement virsh support for checkpoints 2019-07-26 16:48:58 -05:00
virsh-completer-checkpoint.c tools: use g_strdup instead of VIR_STRDUP 2019-10-21 12:51:59 +02:00
virsh-completer-checkpoint.h tools: Separate checkpoint related completers into a file 2019-08-09 09:18:19 +02:00
virsh-completer-domain.c virsh: Expose virDomainGetHostnameFlags 2020-01-16 09:02:35 +01:00
virsh-completer-domain.h virsh: Expose virDomainGetHostnameFlags 2020-01-16 09:02:35 +01:00
virsh-completer-host.c tools: Use g_strdup_printf() instead of virAsprintf() 2019-11-12 16:15:59 +01:00
virsh-completer-host.h tools: Separate host related completers into a file 2019-08-09 09:17:44 +02:00
virsh-completer-interface.c tools: use g_strdup instead of VIR_STRDUP 2019-10-21 12:51:59 +02:00
virsh-completer-interface.h tools: Separate interface related completers into a file 2019-08-09 09:07:51 +02:00
virsh-completer-network.c tools: remove unneeded cleanup labels 2019-11-12 17:54:01 +01:00
virsh-completer-network.h tools: Separate network related completers into a file 2019-08-09 09:09:59 +02:00
virsh-completer-nodedev.c Drop needless ret variable 2019-10-24 08:10:37 +02:00
virsh-completer-nodedev.h tools: Separate nodedev related completers into a file 2019-08-09 09:10:08 +02:00
virsh-completer-nwfilter.c tools: use g_strdup instead of VIR_STRDUP 2019-10-21 12:51:59 +02:00
virsh-completer-nwfilter.h tools: Separate nwfilter related completers into a file 2019-08-09 09:15:36 +02:00
virsh-completer-pool.c Drop needless ret variable 2019-10-24 08:10:37 +02:00
virsh-completer-pool.h virsh: Introduce virshPoolTypeCompleter 2019-08-09 09:20:13 +02:00
virsh-completer-secret.c virsh: Work around virSecretFree quirks 2020-01-28 18:09:57 +01:00
virsh-completer-secret.h tools: Separate secret related completers into a file 2019-08-09 09:16:28 +02:00
virsh-completer-snapshot.c tools: use g_strdup instead of VIR_STRDUP 2019-10-21 12:51:59 +02:00
virsh-completer-snapshot.h tools: Separate snapshot related completers into a file 2019-08-09 09:17:06 +02:00
virsh-completer-volume.c tools: use g_strdup instead of VIR_STRDUP 2019-10-21 12:51:59 +02:00
virsh-completer-volume.h tools: Separate storage volume related completers into a file 2019-08-09 09:07:02 +02:00
virsh-completer.c tools: Use g_strdup_printf() instead of virAsprintf() 2019-11-12 16:15:59 +01:00
virsh-completer.h virsh-completer: Drop needless #include 2019-08-09 09:18:54 +02:00
virsh-console.c use g_ascii_toupper instead of c_toupper from gnulib 2019-12-10 13:49:24 +01:00
virsh-console.h tools: use #pragma once in headers 2019-06-19 17:12:34 +02:00
virsh-domain-monitor.c Add a space before ending a comment 2020-01-30 12:32:03 +01:00
virsh-domain-monitor.h virsh: Fix virshDomainInterfaceSourceCompleter 2020-01-07 16:12:55 +01:00
virsh-domain.c tools: rewrite interactive job monitoring logic 2020-02-07 15:03:53 +00:00
virsh-domain.h virsh: Expose virDomainGetHostnameFlags 2020-01-16 09:02:35 +01:00
virsh-edit.c Use G_GNUC_FALLTHROUGH instead of ATTRIBUTE_FALLTHROUGH 2019-10-15 16:14:19 +02:00
virsh-host.c tools: Use g_strdup_printf() instead of virAsprintf() 2019-11-12 16:15:59 +01:00
virsh-host.h tools: use #pragma once in headers 2019-06-19 17:12:34 +02:00
virsh-interface.c tools: Use g_strdup_printf() instead of virAsprintf() 2019-11-12 16:15:59 +01:00
virsh-interface.h tools: use #pragma once in headers 2019-06-19 17:12:34 +02:00
virsh-network.c src: replace gmtime_r/localtime_r/strftime with GDateTime 2020-01-17 10:02:01 +00:00
virsh-network.h tools: use #pragma once in headers 2019-06-19 17:12:34 +02:00
virsh-nodedev.c src: replace verify(expr) with G_STATIC_ASSERT(expr) 2020-01-17 10:02:01 +00:00
virsh-nodedev.h tools: s/Nodedev/NodeDevice/ 2019-08-09 09:03:53 +02:00
virsh-nwfilter.c tools: use G_GNUC_UNUSED 2019-10-15 11:25:25 +02:00
virsh-nwfilter.h tools: use #pragma once in headers 2019-06-19 17:12:34 +02:00
virsh-pool.c Add a space before ending a comment 2020-01-30 12:32:03 +01:00
virsh-pool.h tools: use #pragma once in headers 2019-06-19 17:12:34 +02:00
virsh-secret.c util: add API for reading password from the console 2020-01-29 14:51:39 +00:00
virsh-secret.h tools: use #pragma once in headers 2019-06-19 17:12:34 +02:00
virsh-snapshot.c src: replace gmtime_r/localtime_r/strftime with GDateTime 2020-01-17 10:02:01 +00:00
virsh-snapshot.h tools: use #pragma once in headers 2019-06-19 17:12:34 +02:00
virsh-util.c virsh: Work around virSecretFree quirks 2020-01-28 18:09:57 +01:00
virsh-util.h virsh: Work around virSecretFree quirks 2020-01-28 18:09:57 +01:00
virsh-volume.c tools: Use g_strdup_printf() instead of virAsprintf() 2019-11-12 16:15:59 +01:00
virsh-volume.h tools: use #pragma once in headers 2019-06-19 17:12:34 +02:00
virsh.c rpc: conditionalize signal handling 2020-01-29 14:51:40 +00:00
virsh.h tools: rewrite interactive job monitoring logic 2020-02-07 15:03:53 +00:00
virsh_win_icon.rc Move virsh into tools/ directory 2009-09-21 14:41:45 +01:00
virt-admin-completer.c tools: use g_strdup instead of VIR_STRDUP 2019-10-21 12:51:59 +02:00
virt-admin-completer.h tools: use #pragma once in headers 2019-06-19 17:12:34 +02:00
virt-admin.c rpc: conditionalize signal handling 2020-01-29 14:51:40 +00:00
virt-admin.h tools: use #pragma once in headers 2019-06-19 17:12:34 +02:00
virt-host-validate-bhyve.c internal: Move <stdio.h> include to internal.h 2018-09-20 10:16:38 +02:00
virt-host-validate-bhyve.h tools: use #pragma once in headers 2019-06-19 17:12:34 +02:00
virt-host-validate-common.c src: replace verify(expr) with G_STATIC_ASSERT(expr) 2020-01-17 10:02:01 +00:00
virt-host-validate-common.h Use G_GNUC_PRINTF instead of ATTRIBUTE_FMT_PRINTF 2019-10-15 16:14:18 +02:00
virt-host-validate-lxc.c virt-host-validate: require freezer for LXC 2018-10-05 15:53:29 +02:00
virt-host-validate-lxc.h tools: use #pragma once in headers 2019-06-19 17:12:34 +02:00
virt-host-validate-qemu.c virt-host-validate: rewrite cgroup detection to use util/vircgroup 2018-10-05 15:53:29 +02:00
virt-host-validate-qemu.h tools: use #pragma once in headers 2019-06-19 17:12:34 +02:00
virt-host-validate.c src: More cleanup of some system headers already contained in internal.h 2018-09-20 10:16:39 +02:00
virt-login-shell-helper.c src: switch from fnmatch to g_pattern_match_simple 2020-01-03 15:42:13 +00:00
virt-login-shell.c build: generate configmake.h in root directory 2020-01-29 14:51:39 +00:00
virt-login-shell.conf virt-login-shell: add ability to auto-detect shell from container 2016-06-10 11:03:02 +01:00
virt-pki-validate.in tools: Fix permissions for virt-pki-validate.in 2019-07-01 17:20:32 +02:00
virt-sanlock-cleanup.in build: Extract pod from source files 2016-04-25 15:40:43 +02:00
virt-xml-validate.in tools: fix XML validator detection of network port XML schema 2019-09-12 16:06:57 +01:00
vsh-table.c tools: replace wcwidth() with g_unichar_* APIs 2020-01-29 14:51:39 +00:00
vsh-table.h tools: use #pragma once in headers 2019-06-19 17:12:34 +02:00
vsh.c tools: conditionalize use of O_SYNC flag 2020-02-04 14:00:45 +00:00
vsh.h src: conditionally exclude cfmakeraw/termios.h on WIN32 2020-01-17 10:02:01 +00:00