diff mbox series

[02/14] spice: add QemuSpiceOps, move migrate_info

Message ID 20201019075224.14803-3-kraxel@redhat.com
State New
Headers show
Series ui: build spice and opengl as module. | expand

Commit Message

Gerd Hoffmann Oct. 19, 2020, 7:52 a.m. UTC
Add QemuSpiceOps struct.  This struct holds function pointers to the
spice functions.  It will be initialized with pointers to the stub
functions.  When spice gets initialized the function pointers will
be re-written to the real functions.

The spice stubs will move from qemu-spice.h to spice-module.c for that,
because they will be needed for both "CONFIG_SPICE=n" and "CONFIG_SPICE=y
but spice module not loaded" cases.

This patch adds the infrastructure and starts with moving
qemu_spice_migrate_info() to QemuSpiceOps.

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
---
 include/ui/qemu-spice-module.h |  5 +++++
 include/ui/qemu-spice.h        |  5 -----
 monitor/misc.c                 |  2 +-
 ui/spice-core.c                |  5 +++++
 ui/spice-module.c              | 10 ++++++++++
 5 files changed, 21 insertions(+), 6 deletions(-)

Comments

Dr. David Alan Gilbert Oct. 19, 2020, 10:17 a.m. UTC | #1
* Gerd Hoffmann (kraxel@redhat.com) wrote:
> Add QemuSpiceOps struct.  This struct holds function pointers to the
> spice functions.  It will be initialized with pointers to the stub
> functions.  When spice gets initialized the function pointers will
> be re-written to the real functions.
> 
> The spice stubs will move from qemu-spice.h to spice-module.c for that,
> because they will be needed for both "CONFIG_SPICE=n" and "CONFIG_SPICE=y
> but spice module not loaded" cases.
> 
> This patch adds the infrastructure and starts with moving
> qemu_spice_migrate_info() to QemuSpiceOps.
> 
> Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
> ---
>  include/ui/qemu-spice-module.h |  5 +++++
>  include/ui/qemu-spice.h        |  5 -----
>  monitor/misc.c                 |  2 +-
>  ui/spice-core.c                |  5 +++++
>  ui/spice-module.c              | 10 ++++++++++
>  5 files changed, 21 insertions(+), 6 deletions(-)
> 
> diff --git a/include/ui/qemu-spice-module.h b/include/ui/qemu-spice-module.h
> index 1af0e659a109..7a9963dd5810 100644
> --- a/include/ui/qemu-spice-module.h
> +++ b/include/ui/qemu-spice-module.h
> @@ -18,6 +18,11 @@
>  #ifndef QEMU_SPICE_MODULE_H
>  #define QEMU_SPICE_MODULE_H
>  
> +struct QemuSpiceOps {
> +    int (*migrate_info)(const char *h, int p, int t, const char *s);
> +};
> +

I realise that's mostly a move, but if you need to repost, can you
expand those 4 single character parameter names?

Dave

>  extern int using_spice;
> +extern struct QemuSpiceOps qemu_spice;
>  
>  #endif
> diff --git a/include/ui/qemu-spice.h b/include/ui/qemu-spice.h
> index ab523788b9a9..3157016c2bb4 100644
> --- a/include/ui/qemu-spice.h
> +++ b/include/ui/qemu-spice.h
> @@ -60,11 +60,6 @@ static inline int qemu_spice_set_pw_expire(time_t expires)
>  {
>      return -1;
>  }
> -static inline int qemu_spice_migrate_info(const char *h, int p, int t,
> -                                          const char *s)
> -{
> -    return -1;
> -}
>  
>  static inline int qemu_spice_display_add_client(int csock, int skipauth,
>                                                  int tls)
> diff --git a/monitor/misc.c b/monitor/misc.c
> index 4a859fb24a21..32e6a8c13d07 100644
> --- a/monitor/misc.c
> +++ b/monitor/misc.c
> @@ -437,7 +437,7 @@ void qmp_client_migrate_info(const char *protocol, const char *hostname,
>              return;
>          }
>  
> -        if (qemu_spice_migrate_info(hostname,
> +        if (qemu_spice.migrate_info(hostname,
>                                      has_port ? port : -1,
>                                      has_tls_port ? tls_port : -1,
>                                      cert_subject)) {
> diff --git a/ui/spice-core.c b/ui/spice-core.c
> index a7fa5743585f..b03d743cf9b9 100644
> --- a/ui/spice-core.c
> +++ b/ui/spice-core.c
> @@ -993,8 +993,13 @@ int qemu_spice_display_is_running(SimpleSpiceDisplay *ssd)
>      return spice_display_is_running;
>  }
>  
> +static struct QemuSpiceOps real_spice_ops = {
> +    .migrate_info = qemu_spice_migrate_info,
> +};
> +
>  static void spice_register_config(void)
>  {
> +    qemu_spice = real_spice_ops;
>      qemu_add_opts(&qemu_spice_opts);
>  }
>  opts_init(spice_register_config);
> diff --git a/ui/spice-module.c b/ui/spice-module.c
> index f86b0ac517dc..f1939545a684 100644
> --- a/ui/spice-module.c
> +++ b/ui/spice-module.c
> @@ -21,3 +21,13 @@
>  #include "ui/qemu-spice-module.h"
>  
>  int using_spice;
> +
> +static int qemu_spice_migrate_info_stub(const char *h, int p, int t,
> +                                        const char *s)
> +{
> +    return -1;
> +}
> +
> +struct QemuSpiceOps qemu_spice = {
> +    .migrate_info = qemu_spice_migrate_info_stub,
> +};
> -- 
> 2.27.0
>
diff mbox series

Patch

diff --git a/include/ui/qemu-spice-module.h b/include/ui/qemu-spice-module.h
index 1af0e659a109..7a9963dd5810 100644
--- a/include/ui/qemu-spice-module.h
+++ b/include/ui/qemu-spice-module.h
@@ -18,6 +18,11 @@ 
 #ifndef QEMU_SPICE_MODULE_H
 #define QEMU_SPICE_MODULE_H
 
+struct QemuSpiceOps {
+    int (*migrate_info)(const char *h, int p, int t, const char *s);
+};
+
 extern int using_spice;
+extern struct QemuSpiceOps qemu_spice;
 
 #endif
diff --git a/include/ui/qemu-spice.h b/include/ui/qemu-spice.h
index ab523788b9a9..3157016c2bb4 100644
--- a/include/ui/qemu-spice.h
+++ b/include/ui/qemu-spice.h
@@ -60,11 +60,6 @@  static inline int qemu_spice_set_pw_expire(time_t expires)
 {
     return -1;
 }
-static inline int qemu_spice_migrate_info(const char *h, int p, int t,
-                                          const char *s)
-{
-    return -1;
-}
 
 static inline int qemu_spice_display_add_client(int csock, int skipauth,
                                                 int tls)
diff --git a/monitor/misc.c b/monitor/misc.c
index 4a859fb24a21..32e6a8c13d07 100644
--- a/monitor/misc.c
+++ b/monitor/misc.c
@@ -437,7 +437,7 @@  void qmp_client_migrate_info(const char *protocol, const char *hostname,
             return;
         }
 
-        if (qemu_spice_migrate_info(hostname,
+        if (qemu_spice.migrate_info(hostname,
                                     has_port ? port : -1,
                                     has_tls_port ? tls_port : -1,
                                     cert_subject)) {
diff --git a/ui/spice-core.c b/ui/spice-core.c
index a7fa5743585f..b03d743cf9b9 100644
--- a/ui/spice-core.c
+++ b/ui/spice-core.c
@@ -993,8 +993,13 @@  int qemu_spice_display_is_running(SimpleSpiceDisplay *ssd)
     return spice_display_is_running;
 }
 
+static struct QemuSpiceOps real_spice_ops = {
+    .migrate_info = qemu_spice_migrate_info,
+};
+
 static void spice_register_config(void)
 {
+    qemu_spice = real_spice_ops;
     qemu_add_opts(&qemu_spice_opts);
 }
 opts_init(spice_register_config);
diff --git a/ui/spice-module.c b/ui/spice-module.c
index f86b0ac517dc..f1939545a684 100644
--- a/ui/spice-module.c
+++ b/ui/spice-module.c
@@ -21,3 +21,13 @@ 
 #include "ui/qemu-spice-module.h"
 
 int using_spice;
+
+static int qemu_spice_migrate_info_stub(const char *h, int p, int t,
+                                        const char *s)
+{
+    return -1;
+}
+
+struct QemuSpiceOps qemu_spice = {
+    .migrate_info = qemu_spice_migrate_info_stub,
+};