On 08/18/2012 12:38 AM, Eric Blake wrote:
It's easier to order things in topological order than it is to
forward declare in one file for use only by one other file.
* tools/virsh.c (vshWatchJob, parseRateStr)
(vshDomainStateToString, vshDomainStateReasonToString)
(vshDomainControlStateToString, vshDomainVcpuStateToString): Drop
useless prototypes.
* tools/virsh-domain.c (vshWatchJob): Move earlier.
mechanical code movement and it still compiles; I trust you've got a
reasonable plan with where this is going, so ACK.
---
tools/virsh-domain.c | 180 +++++++++++++++++++++++++--------------------------
tools/virsh.c | 16 -----
2 files changed, 90 insertions(+), 106 deletions(-)
diff --git a/tools/virsh-domain.c b/tools/virsh-domain.c
index 676c002..dc8620e 100644
--- a/tools/virsh-domain.c
+++ b/tools/virsh-domain.c
@@ -2772,6 +2772,96 @@ out_sig:
}
static bool
+vshWatchJob(vshControl *ctl,
+ virDomainPtr dom,
+ bool verbose,
+ int pipe_fd,
+ int timeout,
+ jobWatchTimeoutFunc timeout_func,
+ void *opaque,
+ const char *label)
+{
+ struct sigaction sig_action;
+ struct sigaction old_sig_action;
+ struct pollfd pollfd;
+ struct timeval start, curr;
+ virDomainJobInfo jobinfo;
+ int ret = -1;
+ char retchar;
+ bool functionReturn = false;
+ sigset_t sigmask, oldsigmask;
+
+ sigemptyset(&sigmask);
+ sigaddset(&sigmask, SIGINT);
+
+ intCaught = 0;
+ sig_action.sa_sigaction = vshCatchInt;
+ sig_action.sa_flags = SA_SIGINFO;
+ sigemptyset(&sig_action.sa_mask);
+ sigaction(SIGINT, &sig_action, &old_sig_action);
+
+ pollfd.fd = pipe_fd;
+ pollfd.events = POLLIN;
+ pollfd.revents = 0;
+
+ GETTIMEOFDAY(&start);
+ while (1) {
+repoll:
+ ret = poll(&pollfd, 1, 500);
+ if (ret > 0) {
+ if (pollfd.revents & POLLIN &&
+ saferead(pipe_fd, &retchar, sizeof(retchar)) > 0 &&
+ retchar == '0') {
+ if (verbose) {
+ /* print [100 %] */
+ print_job_progress(label, 0, 1);
+ }
+ break;
+ }
+ goto cleanup;
+ }
+
+ if (ret < 0) {
+ if (errno == EINTR) {
+ if (intCaught) {
+ virDomainAbortJob(dom);
+ intCaught = 0;
+ } else {
+ goto repoll;
+ }
+ }
+ goto cleanup;
+ }
+
+ GETTIMEOFDAY(&curr);
+ if (timeout && (((int)(curr.tv_sec - start.tv_sec) * 1000 +
+ (int)(curr.tv_usec - start.tv_usec) / 1000) >
+ timeout * 1000)) {
+ /* suspend the domain when migration timeouts. */
+ vshDebug(ctl, VSH_ERR_DEBUG, "%s timeout", label);
+ if (timeout_func)
+ (timeout_func)(ctl, dom, opaque);
+ timeout = 0;
+ }
+
+ if (verbose) {
+ pthread_sigmask(SIG_BLOCK, &sigmask, &oldsigmask);
+ ret = virDomainGetJobInfo(dom, &jobinfo);
+ pthread_sigmask(SIG_SETMASK, &oldsigmask, NULL);
+ if (ret == 0)
+ print_job_progress(label, jobinfo.dataRemaining,
+ jobinfo.dataTotal);
+ }
+ }
+
+ functionReturn = true;
+
+cleanup:
+ sigaction(SIGINT, &old_sig_action, NULL);
+ return functionReturn;
+}
+
+static bool
cmdSave(vshControl *ctl, const vshCmd *cmd)
{
bool ret = false;
@@ -6426,96 +6516,6 @@ vshMigrationTimeout(vshControl *ctl,
}
static bool
-vshWatchJob(vshControl *ctl,
- virDomainPtr dom,
- bool verbose,
- int pipe_fd,
- int timeout,
- jobWatchTimeoutFunc timeout_func,
- void *opaque,
- const char *label)
-{
- struct sigaction sig_action;
- struct sigaction old_sig_action;
- struct pollfd pollfd;
- struct timeval start, curr;
- virDomainJobInfo jobinfo;
- int ret = -1;
- char retchar;
- bool functionReturn = false;
- sigset_t sigmask, oldsigmask;
-
- sigemptyset(&sigmask);
- sigaddset(&sigmask, SIGINT);
-
- intCaught = 0;
- sig_action.sa_sigaction = vshCatchInt;
- sig_action.sa_flags = SA_SIGINFO;
- sigemptyset(&sig_action.sa_mask);
- sigaction(SIGINT, &sig_action, &old_sig_action);
-
- pollfd.fd = pipe_fd;
- pollfd.events = POLLIN;
- pollfd.revents = 0;
-
- GETTIMEOFDAY(&start);
- while (1) {
-repoll:
- ret = poll(&pollfd, 1, 500);
- if (ret > 0) {
- if (pollfd.revents & POLLIN &&
- saferead(pipe_fd, &retchar, sizeof(retchar)) > 0 &&
- retchar == '0') {
- if (verbose) {
- /* print [100 %] */
- print_job_progress(label, 0, 1);
- }
- break;
- }
- goto cleanup;
- }
-
- if (ret < 0) {
- if (errno == EINTR) {
- if (intCaught) {
- virDomainAbortJob(dom);
- intCaught = 0;
- } else {
- goto repoll;
- }
- }
- goto cleanup;
- }
-
- GETTIMEOFDAY(&curr);
- if (timeout && (((int)(curr.tv_sec - start.tv_sec) * 1000 +
- (int)(curr.tv_usec - start.tv_usec) / 1000) >
- timeout * 1000)) {
- /* suspend the domain when migration timeouts. */
- vshDebug(ctl, VSH_ERR_DEBUG, "%s timeout", label);
- if (timeout_func)
- (timeout_func)(ctl, dom, opaque);
- timeout = 0;
- }
-
- if (verbose) {
- pthread_sigmask(SIG_BLOCK, &sigmask, &oldsigmask);
- ret = virDomainGetJobInfo(dom, &jobinfo);
- pthread_sigmask(SIG_SETMASK, &oldsigmask, NULL);
- if (ret == 0)
- print_job_progress(label, jobinfo.dataRemaining,
- jobinfo.dataTotal);
- }
- }
-
- functionReturn = true;
-
-cleanup:
- sigaction(SIGINT, &old_sig_action, NULL);
- return functionReturn;
-}
-
-static bool
cmdMigrate(vshControl *ctl, const vshCmd *cmd)
{
virDomainPtr dom = NULL;
diff --git a/tools/virsh.c b/tools/virsh.c
index 4dff02e..3be2f99 100644
--- a/tools/virsh.c
+++ b/tools/virsh.c
@@ -361,10 +361,6 @@ static void vshDebug(vshControl *ctl, int level, const char *format,
...)
#define vshStrcasecmp(S1, S2) strcasecmp(S1, S2)
static int vshDomainState(vshControl *ctl, virDomainPtr dom, int *reason);
-static const char *vshDomainStateToString(int state);
-static const char *vshDomainStateReasonToString(int state, int reason);
-static const char *vshDomainControlStateToString(int state);
-static const char *vshDomainVcpuStateToString(int state);
static bool vshConnectionUsability(vshControl *ctl, virConnectPtr conn);
static virTypedParameterPtr vshFindTypedParamByName(const char *name,
virTypedParameterPtr list,
@@ -389,16 +385,6 @@ typedef struct __vshCtrlData {
typedef void (*jobWatchTimeoutFunc) (vshControl *ctl, virDomainPtr dom,
void *opaque);
-static bool
-vshWatchJob(vshControl *ctl,
- virDomainPtr dom,
- bool verbose,
- int pipe_fd,
- int timeout,
- jobWatchTimeoutFunc timeout_func,
- void *opaque,
- const char *label);
-
static void *_vshMalloc(vshControl *ctl, size_t sz, const char *filename, int line);
#define vshMalloc(_ctl, _sz) _vshMalloc(_ctl, _sz, __FILE__, __LINE__)
@@ -408,8 +394,6 @@ static void *_vshCalloc(vshControl *ctl, size_t nmemb, size_t sz,
const char *fi
static char *_vshStrdup(vshControl *ctl, const char *s, const char *filename, int
line);
#define vshStrdup(_ctl, _s) _vshStrdup(_ctl, _s, __FILE__, __LINE__)
-static int parseRateStr(const char *rateStr, virNetDevBandwidthRatePtr rate);
-
static void *
_vshMalloc(vshControl *ctl, size_t size, const char *filename, int line)
{