From: Ruslan Ruslichenko <[email protected]>

This patch adds a new command line option `-machine-path` to specify
a directory path for shared machine resources.

This path is intended to serve as a base directory for devices or
subsystems that need to automatically create coordination files,
such as Unix domain sockets, particularly in multi-process simulation
environments.

Signed-off-by: Edgar E. Iglesias <[email protected]>
Signed-off-by: Takahiro Nakata <[email protected]>
Signed-off-by: Ruslan Ruslichenko <[email protected]>
---
 include/system/system.h |  2 ++
 qemu-options.hx         | 10 ++++++++++
 system/vl.c             |  4 ++++
 3 files changed, 16 insertions(+)

diff --git a/include/system/system.h b/include/system/system.h
index 03a2d0e900..0cd012004d 100644
--- a/include/system/system.h
+++ b/include/system/system.h
@@ -57,6 +57,8 @@ bool is_mlock_on_fault(MlockState);
 
 extern MlockState mlock_state;
 
+extern const char *machine_path;
+
 #define MAX_OPTION_ROMS 16
 typedef struct QEMUOptionRom {
     const char *name;
diff --git a/qemu-options.hx b/qemu-options.hx
index 6dd3e04e38..b7dd2a64f0 100644
--- a/qemu-options.hx
+++ b/qemu-options.hx
@@ -765,6 +765,16 @@ SRST
     Preallocate memory when using -mem-path.
 ERST
 
+DEF("machine-path", HAS_ARG, QEMU_OPTION_machine_path,
+    "-machine-path DIR A directory in which to create machine nodes\n",
+    QEMU_ARCH_ALL)
+SRST
+``-machine-path path``
+    Selects the machine path.
+    Multi-arch machine nodes will be created in <path>.
+    This option also sets -mem-shared-path to the given path.
+ERST
+
 DEF("k", HAS_ARG, QEMU_OPTION_k,
     "-k language     use keyboard layout (for example 'fr' for French)\n",
     QEMU_ARCH_ALL)
diff --git a/system/vl.c b/system/vl.c
index c890da586c..4750b1cf69 100644
--- a/system/vl.c
+++ b/system/vl.c
@@ -182,6 +182,7 @@ static QemuPluginList plugin_list = 
QTAILQ_HEAD_INITIALIZER(plugin_list);
 static BlockdevOptionsQueue bdo_queue = QSIMPLEQ_HEAD_INITIALIZER(bdo_queue);
 static bool nographic = false;
 static int mem_prealloc; /* force preallocation of physical target memory */
+const char *machine_path;
 static const char *vga_model = NULL;
 static DisplayOptions dpy;
 static int num_serial_hds;
@@ -3128,6 +3129,9 @@ void qemu_init(int argc, char **argv)
             case QEMU_OPTION_mem_prealloc:
                 mem_prealloc = 1;
                 break;
+            case QEMU_OPTION_machine_path:
+                machine_path = optarg;
+                break;
             case QEMU_OPTION_d:
                 log_mask = optarg;
                 break;
-- 
2.43.0


Reply via email to