[libvirt PATCH 03/11] libxl: Use automatic memory management

Tim Wiederhake twiederh at redhat.com
Mon Feb 7 13:12:06 UTC 2022


Signed-off-by: Tim Wiederhake <twiederh at redhat.com>
---
 src/libxl/libxl_conf.c   |  8 ++------
 src/libxl/libxl_conf.h   | 12 ------------
 src/libxl/libxl_logger.c | 20 +++++++++-----------
 3 files changed, 11 insertions(+), 29 deletions(-)

diff --git a/src/libxl/libxl_conf.c b/src/libxl/libxl_conf.c
index f062f8e958..a0fc51c74a 100644
--- a/src/libxl/libxl_conf.c
+++ b/src/libxl/libxl_conf.c
@@ -1815,12 +1815,8 @@ libxlDriverConfigInit(libxlDriverConfig *cfg)
 libxlDriverConfig *
 libxlDriverConfigGet(libxlDriverPrivate *driver)
 {
-    libxlDriverConfig *cfg;
-
-    libxlDriverLock(driver);
-    cfg = virObjectRef(driver->config);
-    libxlDriverUnlock(driver);
-    return cfg;
+    VIR_LOCK_GUARD lock = virLockGuardLock(&driver->lock);
+    return virObjectRef(driver->config);
 }
 
 int libxlDriverConfigLoadFile(libxlDriverConfig *cfg,
diff --git a/src/libxl/libxl_conf.h b/src/libxl/libxl_conf.h
index b74f455b69..16a7195bfd 100644
--- a/src/libxl/libxl_conf.h
+++ b/src/libxl/libxl_conf.h
@@ -219,15 +219,3 @@ libxlBuildDomainConfig(virPortAllocatorRange *graphicsports,
                        virDomainDef *def,
                        libxlDriverConfig *cfg,
                        libxl_domain_config *d_config);
-
-static inline void
-libxlDriverLock(libxlDriverPrivate *driver)
-{
-    virMutexLock(&driver->lock);
-}
-
-static inline void
-libxlDriverUnlock(libxlDriverPrivate *driver)
-{
-    virMutexUnlock(&driver->lock);
-}
diff --git a/src/libxl/libxl_logger.c b/src/libxl/libxl_logger.c
index 4708553f29..45cdc32f38 100644
--- a/src/libxl/libxl_logger.c
+++ b/src/libxl/libxl_logger.c
@@ -79,16 +79,16 @@ libvirt_vmessage(xentoollog_logger *logger_in,
     /* Should we print to a domain-specific log file? */
     if ((start = strstr(message, ": Domain ")) &&
         (end = strstr(start + 9, ":"))) {
-        FILE *domainLogFile;
+        FILE *domainLogFile = NULL;
 
         VIR_DEBUG("Found domain log message");
 
         start = start + 9;
         *end = '\0';
 
-        virMutexLock(&lg->tableLock);
-        domainLogFile = virHashLookup(lg->files, start);
-        virMutexUnlock(&lg->tableLock);
+        VIR_WITH_MUTEX_LOCK_GUARD(&lg->tableLock) {
+            domainLogFile = virHashLookup(lg->files, start);
+        }
         if (domainLogFile)
             logFile = domainLogFile;
 
@@ -197,9 +197,9 @@ libxlLoggerOpenFile(libxlLogger *logger,
                  path, g_strerror(errno));
         return;
     }
-    virMutexLock(&logger->tableLock);
-    ignore_value(virHashAddEntry(logger->files, domidstr, logFile));
-    virMutexUnlock(&logger->tableLock);
+    VIR_WITH_MUTEX_LOCK_GUARD(&logger->tableLock) {
+        ignore_value(virHashAddEntry(logger->files, domidstr, logFile));
+    }
 
     /* domain_config is non NULL only when starting a new domain */
     if (domain_config) {
@@ -211,10 +211,8 @@ libxlLoggerOpenFile(libxlLogger *logger,
 void
 libxlLoggerCloseFile(libxlLogger *logger, int id)
 {
-    g_autofree char *domidstr = NULL;
-    domidstr = g_strdup_printf("%d", id);
+    g_autofree char *domidstr = g_strdup_printf("%d", id);
+    VIR_LOCK_GUARD lock = virLockGuardLock(&logger->tableLock);
 
-    virMutexLock(&logger->tableLock);
     ignore_value(virHashRemoveEntry(logger->files, domidstr));
-    virMutexUnlock(&logger->tableLock);
 }
-- 
2.31.1




More information about the libvir-list mailing list