# HG changeset patch
# User kaf24@xxxxxxxxxxxxxxxxxxxx
# Node ID e5cf18c05e8b438d5d543fe664aa83bf2c4e70c5
# Parent 3c09a6b27b14ce537555bc533e3022fadf32e7d7
[XENTOP] Adds batch mode processing option (output to stdout)
to the xentop utility. It also adds the ability to specify the
number of iterations xentop should produce before exiting.
a) xentop -b
will output to stdout.
b) xentop -i <number>
will iterate <number> times and exit (option "n" is already used by
xentop. Hence the choice of "i"). This option can be used for both the
curses and batch modes.
From: Hariprasad Nellitheertha <mlisthari@xxxxxxxxx>
Signed-off-by: Keir Fraser <keir@xxxxxxxxxxxxx>
---
tools/xenstat/xentop/xentop.1 | 9 ++++
tools/xenstat/xentop/xentop.c | 83 +++++++++++++++++++++++++++++-------------
2 files changed, 67 insertions(+), 25 deletions(-)
diff -r 3c09a6b27b14 -r e5cf18c05e8b tools/xenstat/xentop/xentop.1
--- a/tools/xenstat/xentop/xentop.1 Wed Jun 28 10:03:24 2006 +0100
+++ b/tools/xenstat/xentop/xentop.1 Wed Jun 28 10:22:13 2006 +0100
@@ -25,6 +25,8 @@
[\fB\-n\fR]
[\fB\-r\fR]
[\fB\-v\fR]
+[\fB\-b\fR]
+[\fB\-i\fRITERATIONS]
.SH DESCRIPTION
\fBxentop\fR displays information about the Xen system and domains, in a
@@ -50,6 +52,13 @@ repeat table header before each domain
.TP
\fB\-v\fR, \fB\-\-vcpus\fR
output VCPU data
+.TP
+\fB\-b\fR, \fB\-\-batch\fR
+output data in batch mode (to stdout)
+.TP
+\fB\-i\fR, \fB\-\-iterations\fR=\fIITERATIONS\fR
+maximum number of iterations xentop should produce before ending
+
.SH "INTERACTIVE COMMANDS"
All interactive commands are case-insensitive.
diff -r 3c09a6b27b14 -r e5cf18c05e8b tools/xenstat/xentop/xentop.c
--- a/tools/xenstat/xentop/xentop.c Wed Jun 28 10:03:24 2006 +0100
+++ b/tools/xenstat/xentop/xentop.c Wed Jun 28 10:22:13 2006 +0100
@@ -153,6 +153,9 @@ field_id sort_field = FIELD_DOMID;
field_id sort_field = FIELD_DOMID;
unsigned int first_domain_index = 0;
unsigned int delay = 3;
+unsigned int batch = 0;
+unsigned int loop = 1;
+unsigned int iterations = 0;
int show_vcpus = 0;
int show_networks = 0;
int repeat_header = 0;
@@ -179,6 +182,8 @@ static void usage(const char *program)
"-n, --networks output vif network data\n"
"-r, --repeat-header repeat table header before each domain\n"
"-v, --vcpus output vcpu data\n"
+ "-b, --batch output in batch mode, no user input
accepted\n"
+ "-i, --iterations number of iterations before exiting\n"
"\n" XENTOP_BUGSTO,
program);
return;
@@ -236,9 +241,15 @@ static void print(const char *fmt, ...)
{
va_list args;
- if(current_row() < lines()-1) {
+ if (!batch) {
+ if((current_row() < lines()-1)) {
+ va_start(args, fmt);
+ vw_printw(stdscr, fmt, args);
+ va_end(args);
+ }
+ } else {
va_start(args, fmt);
- vw_printw(stdscr, fmt, args);
+ vprintf(fmt, args);
va_end(args);
}
}
@@ -803,6 +814,7 @@ static void top(void)
do_network(domains[i]);
}
+ if(!batch)
do_bottom_line();
}
@@ -818,9 +830,11 @@ int main(int argc, char **argv)
{ "repeat-header", no_argument, NULL, 'r' },
{ "vcpus", no_argument, NULL, 'v' },
{ "delay", required_argument, NULL, 'd' },
+ { "batch", no_argument, NULL, 'b' },
+ { "iterations", required_argument, NULL, 'i' },
{ 0, 0, 0, 0 },
};
- const char *sopts = "hVbnvd:";
+ const char *sopts = "hVbnvd:bi:";
if (atexit(cleanup) != 0)
fail("Failed to install cleanup handler.\n");
@@ -847,6 +861,13 @@ int main(int argc, char **argv)
case 'd':
delay = atoi(optarg);
break;
+ case 'b':
+ batch = 1;
+ break;
+ case 'i':
+ iterations = atoi(optarg);
+ loop = 0;
+ break;
}
}
@@ -855,28 +876,40 @@ int main(int argc, char **argv)
if (xhandle == NULL)
fail("Failed to initialize xenstat library\n");
- /* Begin curses stuff */
- initscr();
- start_color();
- cbreak();
- noecho();
- nonl();
- keypad(stdscr, TRUE);
- halfdelay(5);
- use_default_colors();
- init_pair(1, -1, COLOR_YELLOW);
-
- do {
- gettimeofday(&curtime, NULL);
- if(ch != ERR || (curtime.tv_sec - oldtime.tv_sec) >= delay) {
- clear();
- top();
- oldtime = curtime;
- refresh();
- }
- ch = getch();
- } while (handle_key(ch));
-
+ if (!batch) {
+ /* Begin curses stuff */
+ initscr();
+ start_color();
+ cbreak();
+ noecho();
+ nonl();
+ keypad(stdscr, TRUE);
+ halfdelay(5);
+ use_default_colors();
+ init_pair(1, -1, COLOR_YELLOW);
+
+ do {
+ gettimeofday(&curtime, NULL);
+ if(ch != ERR || (curtime.tv_sec - oldtime.tv_sec) >=
delay) {
+ clear();
+ top();
+ oldtime = curtime;
+ refresh();
+ if ((!loop) && !(--iterations))
+ break;
+ }
+ ch = getch();
+ } while (handle_key(ch));
+ } else {
+ do {
+ gettimeofday(&curtime, NULL);
+ top();
+ sleep(delay);
+ if ((!loop) && !(--iterations))
+ break;
+ } while (1);
+ }
+
/* Cleanup occurs in cleanup(), so no work to do here. */
return 0;
_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog
|