]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
rpc: add virNetDaemonSetShutdownCallbacks
authorNikolay Shirokovskiy <nshirokovskiy@virtuozzo.com>
Thu, 23 Jul 2020 06:43:46 +0000 (09:43 +0300)
committerNikolay Shirokovskiy <nshirokovskiy@virtuozzo.com>
Mon, 7 Sep 2020 06:33:59 +0000 (09:33 +0300)
The function is used to set shutdown prepare and wait callbacks. Prepare
callback is used to inform other threads of the daemon that the daemon will be
closed soon so that they can start to shutdown. Wait callback is used to wait
for other threads to actually finish.

Signed-off-by: Nikolay Shirokovskiy <nshirokovskiy@virtuozzo.com>
Reviewed-by: Daniel Henrique Barboza <danielhb413@gmail.com>
src/libvirt_remote.syms
src/rpc/virnetdaemon.c
src/rpc/virnetdaemon.h

index 0018a0c41d90fd6fa3e924b0ff730d1d1a95aee4..335e431ca9dc6e883bbf5c7dce70271691f73a3c 100644 (file)
@@ -87,6 +87,7 @@ virNetDaemonPreExecRestart;
 virNetDaemonQuit;
 virNetDaemonRemoveShutdownInhibition;
 virNetDaemonRun;
+virNetDaemonSetShutdownCallbacks;
 virNetDaemonUpdateServices;
 
 
index 81c2816e6e4ca6dd118a2c8c041924bf597a4ba5..5e3a41d19c92c52190a679b7c2b59bdccbd79368 100644 (file)
@@ -69,6 +69,8 @@ struct _virNetDaemon {
     virHashTablePtr servers;
     virJSONValuePtr srvObject;
 
+    virNetDaemonShutdownCallback shutdownPrepareCb;
+    virNetDaemonShutdownCallback shutdownWaitCb;
     bool quit;
 
     unsigned int autoShutdownTimeout;
@@ -922,3 +924,16 @@ virNetDaemonHasClients(virNetDaemonPtr dmn)
 
     return ret;
 }
+
+void
+virNetDaemonSetShutdownCallbacks(virNetDaemonPtr dmn,
+                                 virNetDaemonShutdownCallback prepareCb,
+                                 virNetDaemonShutdownCallback waitCb)
+{
+    virObjectLock(dmn);
+
+    dmn->shutdownPrepareCb = prepareCb;
+    dmn->shutdownWaitCb = waitCb;
+
+    virObjectUnlock(dmn);
+}
index c2c7767037c228fa5dbdeaf9903e20967bf660f2..9f7a2825809ce90ad66830306ff74003de39fdf8 100644 (file)
@@ -82,3 +82,9 @@ virNetServerPtr virNetDaemonGetServer(virNetDaemonPtr dmn,
 ssize_t virNetDaemonGetServers(virNetDaemonPtr dmn, virNetServerPtr **servers);
 bool virNetDaemonHasServer(virNetDaemonPtr dmn,
                            const char *serverName);
+
+typedef int (*virNetDaemonShutdownCallback)(void);
+
+void virNetDaemonSetShutdownCallbacks(virNetDaemonPtr dmn,
+                                      virNetDaemonShutdownCallback prepareCb,
+                                      virNetDaemonShutdownCallback waitCb);