]> git.proxmox.com Git - qemu-server.git/blobdiff - qmeventd/qmeventd.h
qmeventd: further improve getting VMID from PID
[qemu-server.git] / qmeventd / qmeventd.h
index 1921ef35ce3cec363a8c9cf2697140beaf6c84ac..9afc9351a0a09bb84b89c0d549c587954151fbc5 100644 (file)
@@ -1,27 +1,13 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
 /*
-
-    Copyright (C) 2018 Proxmox Server Solutions GmbH
-
-    Copyright: qemumonitor is under GNU GPL, the GNU General Public License.
-
-    This program is free software; you can redistribute it and/or modify
-    it under the terms of the GNU General Public License as published by
-    the Free Software Foundation; version 2 dated June, 1991.
-
-    This program is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with this program; if not, write to the Free Software
-    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
-    02111-1307, USA.
+    Copyright (C) 2018 - 2021 Proxmox Server Solutions GmbH
 
     Author: Dominik Csapak <d.csapak@proxmox.com>
+    Author: Stefan Reiter <s.reiter@proxmox.com>
 */
 
 #include <sys/syscall.h>
+#include <time.h>
 
 #ifndef __NR_pidfd_open
 #define __NR_pidfd_open 434
@@ -30,7 +16,7 @@
 #define __NR_pidfd_send_signal 424
 #endif
 
-#define VERBOSE_PRINT(...) do { if (verbose) { printf(__VA_ARGS__); } } while (0)
+#define VERBOSE_PRINT(...) do { if (verbose) { printf(__VA_ARGS__); fflush(stdout); } } while (0)
 
 static inline void log_neg(int errval, const char *msg)
 {
@@ -78,6 +64,8 @@ struct Client {
 
     int fd;
     pid_t pid;
+    int pidfd;
+    time_t timeout;
 
     ClientType type;
     ClientState state;
@@ -98,11 +86,6 @@ struct Client {
     } vzdump;
 };
 
-struct CleanupData {
-    pid_t pid;
-    int pidfd;
-};
-
 void handle_qmp_handshake(struct Client *client);
 void handle_qmp_event(struct Client *client, struct json_object *obj);
 void handle_qmp_return(struct Client *client, struct json_object *data, bool error);