mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-09-08 16:54:49 +00:00
Remove manual one-shot global initializers
Remove the use of a manually run virLogStartup and virNodeSuspendInitialize methods. Instead make sure they are automatically run using VIR_ONCE_GLOBAL_INIT Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
This commit is contained in:
parent
fbe871263c
commit
b49890de82
@ -1349,7 +1349,6 @@ cleanup:
|
|||||||
VIR_FREE(run_dir);
|
VIR_FREE(run_dir);
|
||||||
|
|
||||||
daemonConfigFree(config);
|
daemonConfigFree(config);
|
||||||
virLogShutdown();
|
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
@ -53,7 +53,6 @@
|
|||||||
#include "conf.h"
|
#include "conf.h"
|
||||||
#include "rpc/virnettlscontext.h"
|
#include "rpc/virnettlscontext.h"
|
||||||
#include "command.h"
|
#include "command.h"
|
||||||
#include "virnodesuspend.h"
|
|
||||||
#include "virrandom.h"
|
#include "virrandom.h"
|
||||||
#include "viruri.h"
|
#include "viruri.h"
|
||||||
|
|
||||||
@ -410,8 +409,7 @@ virInitialize(void)
|
|||||||
|
|
||||||
if (virThreadInitialize() < 0 ||
|
if (virThreadInitialize() < 0 ||
|
||||||
virErrorInitialize() < 0 ||
|
virErrorInitialize() < 0 ||
|
||||||
virRandomInitialize(time(NULL) ^ getpid()) ||
|
virRandomInitialize(time(NULL) ^ getpid()))
|
||||||
virNodeSuspendInit() < 0)
|
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
gcry_control(GCRYCTL_SET_THREAD_CBS, &virTLSThreadImpl);
|
gcry_control(GCRYCTL_SET_THREAD_CBS, &virTLSThreadImpl);
|
||||||
|
@ -762,8 +762,6 @@ virLogReset;
|
|||||||
virLogSetBufferSize;
|
virLogSetBufferSize;
|
||||||
virLogSetDefaultPriority;
|
virLogSetDefaultPriority;
|
||||||
virLogSetFromEnv;
|
virLogSetFromEnv;
|
||||||
virLogShutdown;
|
|
||||||
virLogStartup;
|
|
||||||
virLogUnlock;
|
virLogUnlock;
|
||||||
|
|
||||||
|
|
||||||
@ -1609,7 +1607,6 @@ virNetTLSSessionWrite;
|
|||||||
|
|
||||||
# virnodesuspend.h
|
# virnodesuspend.h
|
||||||
nodeSuspendForDuration;
|
nodeSuspendForDuration;
|
||||||
virNodeSuspendInit;
|
|
||||||
virNodeSuspendGetTargetMask;
|
virNodeSuspendGetTargetMask;
|
||||||
|
|
||||||
|
|
||||||
|
@ -147,25 +147,14 @@ static const char *virLogPriorityString(virLogPriority lvl) {
|
|||||||
return "unknown";
|
return "unknown";
|
||||||
}
|
}
|
||||||
|
|
||||||
static int virLogInitialized = 0;
|
|
||||||
|
|
||||||
/**
|
static int virLogOnceInit(void)
|
||||||
* virLogStartup:
|
{
|
||||||
*
|
|
||||||
* Initialize the logging module
|
|
||||||
*
|
|
||||||
* Returns 0 if successful, and -1 in case or error
|
|
||||||
*/
|
|
||||||
int virLogStartup(void) {
|
|
||||||
const char *pbm = NULL;
|
const char *pbm = NULL;
|
||||||
|
|
||||||
if (virLogInitialized)
|
|
||||||
return -1;
|
|
||||||
|
|
||||||
if (virMutexInit(&virLogMutex) < 0)
|
if (virMutexInit(&virLogMutex) < 0)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
virLogInitialized = 1;
|
|
||||||
virLogLock();
|
virLogLock();
|
||||||
if (VIR_ALLOC_N(virLogBuffer, virLogSize + 1) < 0) {
|
if (VIR_ALLOC_N(virLogBuffer, virLogSize + 1) < 0) {
|
||||||
/*
|
/*
|
||||||
@ -191,6 +180,8 @@ int virLogStartup(void) {
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
VIR_ONCE_GLOBAL_INIT(virLog)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* virLogSetBufferSize:
|
* virLogSetBufferSize:
|
||||||
* @size: size of the buffer in kilobytes or <= 0 to deactivate
|
* @size: size of the buffer in kilobytes or <= 0 to deactivate
|
||||||
@ -211,7 +202,10 @@ virLogSetBufferSize(int size) {
|
|||||||
if (size < 0)
|
if (size < 0)
|
||||||
size = 0;
|
size = 0;
|
||||||
|
|
||||||
if ((virLogInitialized == 0) || (size * 1024 == virLogSize))
|
if (virLogInitialize() < 0)
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
if (size * 1024 == virLogSize)
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
virLogLock();
|
virLogLock();
|
||||||
@ -253,8 +247,8 @@ error:
|
|||||||
* Returns 0 if successful, and -1 in case or error
|
* Returns 0 if successful, and -1 in case or error
|
||||||
*/
|
*/
|
||||||
int virLogReset(void) {
|
int virLogReset(void) {
|
||||||
if (!virLogInitialized)
|
if (virLogInitialize() < 0)
|
||||||
return virLogStartup();
|
return -1;
|
||||||
|
|
||||||
virLogLock();
|
virLogLock();
|
||||||
virLogResetFilters();
|
virLogResetFilters();
|
||||||
@ -266,25 +260,6 @@ int virLogReset(void) {
|
|||||||
virLogUnlock();
|
virLogUnlock();
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
/**
|
|
||||||
* virLogShutdown:
|
|
||||||
*
|
|
||||||
* Shutdown the logging module
|
|
||||||
*/
|
|
||||||
void virLogShutdown(void) {
|
|
||||||
if (!virLogInitialized)
|
|
||||||
return;
|
|
||||||
virLogLock();
|
|
||||||
virLogResetFilters();
|
|
||||||
virLogResetOutputs();
|
|
||||||
virLogLen = 0;
|
|
||||||
virLogStart = 0;
|
|
||||||
virLogEnd = 0;
|
|
||||||
VIR_FREE(virLogBuffer);
|
|
||||||
virLogUnlock();
|
|
||||||
virMutexDestroy(&virLogMutex);
|
|
||||||
virLogInitialized = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Store a string in the ring buffer
|
* Store a string in the ring buffer
|
||||||
@ -450,8 +425,9 @@ int virLogSetDefaultPriority(int priority) {
|
|||||||
VIR_WARN("Ignoring invalid log level setting.");
|
VIR_WARN("Ignoring invalid log level setting.");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
if (!virLogInitialized)
|
if (virLogInitialize() < 0)
|
||||||
virLogStartup();
|
return -1;
|
||||||
|
|
||||||
virLogDefaultPriority = priority;
|
virLogDefaultPriority = priority;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -723,8 +699,8 @@ void virLogVMessage(const char *category, int priority, const char *funcname,
|
|||||||
int emit = 1;
|
int emit = 1;
|
||||||
unsigned int filterflags = 0;
|
unsigned int filterflags = 0;
|
||||||
|
|
||||||
if (!virLogInitialized)
|
if (virLogInitialize() < 0)
|
||||||
virLogStartup();
|
return;
|
||||||
|
|
||||||
if (fmt == NULL)
|
if (fmt == NULL)
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
|
@ -135,9 +135,7 @@ extern int virLogDefineOutput(virLogOutputFunc f, virLogCloseFunc c, void *data,
|
|||||||
|
|
||||||
extern void virLogLock(void);
|
extern void virLogLock(void);
|
||||||
extern void virLogUnlock(void);
|
extern void virLogUnlock(void);
|
||||||
extern int virLogStartup(void);
|
|
||||||
extern int virLogReset(void);
|
extern int virLogReset(void);
|
||||||
extern void virLogShutdown(void);
|
|
||||||
extern int virLogParseDefaultPriority(const char *priority);
|
extern int virLogParseDefaultPriority(const char *priority);
|
||||||
extern int virLogParseFilters(const char *filters);
|
extern int virLogParseFilters(const char *filters);
|
||||||
extern int virLogParseOutputs(const char *output);
|
extern int virLogParseOutputs(const char *output);
|
||||||
|
@ -59,24 +59,19 @@ static void virNodeSuspendUnlock(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
static int virNodeSuspendOnceInit(void)
|
||||||
* virNodeSuspendInit:
|
|
||||||
*
|
|
||||||
* Get the system-wide sleep states supported by the host, such as
|
|
||||||
* Suspend-to-RAM, Suspend-to-Disk, or Hybrid-Suspend, so that a request
|
|
||||||
* to suspend/hibernate the host can be handled appropriately based on
|
|
||||||
* this information.
|
|
||||||
*
|
|
||||||
* Returns 0 if successful, and -1 in case of error.
|
|
||||||
*/
|
|
||||||
int virNodeSuspendInit(void)
|
|
||||||
{
|
{
|
||||||
if (virMutexInit(&virNodeSuspendMutex) < 0)
|
if (virMutexInit(&virNodeSuspendMutex) < 0) {
|
||||||
|
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
|
||||||
|
_("Unable to initialize mutex"));
|
||||||
return -1;
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
VIR_ONCE_GLOBAL_INIT(virNodeSuspend)
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* virNodeSuspendSetNodeWakeup:
|
* virNodeSuspendSetNodeWakeup:
|
||||||
@ -182,6 +177,9 @@ int nodeSuspendForDuration(virConnectPtr conn ATTRIBUTE_UNUSED,
|
|||||||
|
|
||||||
virCheckFlags(0, -1);
|
virCheckFlags(0, -1);
|
||||||
|
|
||||||
|
if (virNodeSuspendInitialize() < 0)
|
||||||
|
return -1;
|
||||||
|
|
||||||
if (virNodeSuspendGetTargetMask(&supported) < 0)
|
if (virNodeSuspendGetTargetMask(&supported) < 0)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
@ -268,6 +266,9 @@ virNodeSuspendSupportsTarget(unsigned int target, bool *supported)
|
|||||||
int status;
|
int status;
|
||||||
int ret = -1;
|
int ret = -1;
|
||||||
|
|
||||||
|
if (virNodeSuspendInitialize() < 0)
|
||||||
|
return -1;
|
||||||
|
|
||||||
*supported = false;
|
*supported = false;
|
||||||
|
|
||||||
switch (target) {
|
switch (target) {
|
||||||
|
@ -30,7 +30,6 @@ int nodeSuspendForDuration(virConnectPtr conn,
|
|||||||
unsigned long long duration,
|
unsigned long long duration,
|
||||||
unsigned int flags);
|
unsigned int flags);
|
||||||
|
|
||||||
int virNodeSuspendInit(void);
|
|
||||||
int virNodeSuspendGetTargetMask(unsigned int *bitmask);
|
int virNodeSuspendGetTargetMask(unsigned int *bitmask);
|
||||||
|
|
||||||
#endif /* __VIR_NODE_SUSPEND_H__ */
|
#endif /* __VIR_NODE_SUSPEND_H__ */
|
||||||
|
Loading…
Reference in New Issue
Block a user