libxl: Use automatic memory management

Signed-off-by: Tim Wiederhake <twiederh@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
This commit is contained in:
Tim Wiederhake 2022-02-04 16:21:36 +01:00
parent 8278ca919e
commit 621fa350ab
3 changed files with 11 additions and 29 deletions

View File

@ -1815,12 +1815,8 @@ libxlDriverConfigInit(libxlDriverConfig *cfg)
libxlDriverConfig * libxlDriverConfig *
libxlDriverConfigGet(libxlDriverPrivate *driver) libxlDriverConfigGet(libxlDriverPrivate *driver)
{ {
libxlDriverConfig *cfg; VIR_LOCK_GUARD lock = virLockGuardLock(&driver->lock);
return virObjectRef(driver->config);
libxlDriverLock(driver);
cfg = virObjectRef(driver->config);
libxlDriverUnlock(driver);
return cfg;
} }
int libxlDriverConfigLoadFile(libxlDriverConfig *cfg, int libxlDriverConfigLoadFile(libxlDriverConfig *cfg,

View File

@ -219,15 +219,3 @@ libxlBuildDomainConfig(virPortAllocatorRange *graphicsports,
virDomainDef *def, virDomainDef *def,
libxlDriverConfig *cfg, libxlDriverConfig *cfg,
libxl_domain_config *d_config); libxl_domain_config *d_config);
static inline void
libxlDriverLock(libxlDriverPrivate *driver)
{
virMutexLock(&driver->lock);
}
static inline void
libxlDriverUnlock(libxlDriverPrivate *driver)
{
virMutexUnlock(&driver->lock);
}

View File

@ -79,16 +79,16 @@ libvirt_vmessage(xentoollog_logger *logger_in,
/* Should we print to a domain-specific log file? */ /* Should we print to a domain-specific log file? */
if ((start = strstr(message, ": Domain ")) && if ((start = strstr(message, ": Domain ")) &&
(end = strstr(start + 9, ":"))) { (end = strstr(start + 9, ":"))) {
FILE *domainLogFile; FILE *domainLogFile = NULL;
VIR_DEBUG("Found domain log message"); VIR_DEBUG("Found domain log message");
start = start + 9; start = start + 9;
*end = '\0'; *end = '\0';
virMutexLock(&lg->tableLock); VIR_WITH_MUTEX_LOCK_GUARD(&lg->tableLock) {
domainLogFile = virHashLookup(lg->files, start); domainLogFile = virHashLookup(lg->files, start);
virMutexUnlock(&lg->tableLock); }
if (domainLogFile) if (domainLogFile)
logFile = domainLogFile; logFile = domainLogFile;
@ -197,9 +197,9 @@ libxlLoggerOpenFile(libxlLogger *logger,
path, g_strerror(errno)); path, g_strerror(errno));
return; return;
} }
virMutexLock(&logger->tableLock); VIR_WITH_MUTEX_LOCK_GUARD(&logger->tableLock) {
ignore_value(virHashAddEntry(logger->files, domidstr, logFile)); ignore_value(virHashAddEntry(logger->files, domidstr, logFile));
virMutexUnlock(&logger->tableLock); }
/* domain_config is non NULL only when starting a new domain */ /* domain_config is non NULL only when starting a new domain */
if (domain_config) { if (domain_config) {
@ -211,10 +211,8 @@ libxlLoggerOpenFile(libxlLogger *logger,
void void
libxlLoggerCloseFile(libxlLogger *logger, int id) libxlLoggerCloseFile(libxlLogger *logger, int id)
{ {
g_autofree char *domidstr = NULL; g_autofree char *domidstr = g_strdup_printf("%d", id);
domidstr = g_strdup_printf("%d", id); VIR_LOCK_GUARD lock = virLockGuardLock(&logger->tableLock);
virMutexLock(&logger->tableLock);
ignore_value(virHashRemoveEntry(logger->files, domidstr)); ignore_value(virHashRemoveEntry(logger->files, domidstr));
virMutexUnlock(&logger->tableLock);
} }