[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH 3 of 3] [xen-detect] Add arguments to print out only outputs we are interested in
# HG changeset patch # User konrad@xxxxxxxxxxxxxxxxxxx # Date 1261498156 18000 # Node ID 04c067941b17bdc679ffdc2f6c81f8e2f78e9cc5 # Parent 7bd805a543da685a3dba7b8b0c4e3e7052c863b3 [xen-detect] Add arguments to print out only outputs we are interested in. This is quite usefull in scripts where you can do if xen-detect -P || modprobe xen-<some module> And do not have to parse the output - instead you will get the output only if the condition exists. diff -r 7bd805a543da -r 04c067941b17 tools/misc/xen-detect.c --- a/tools/misc/xen-detect.c Mon Dec 21 18:51:43 2009 -0500 +++ b/tools/misc/xen-detect.c Tue Dec 22 11:09:16 2009 -0500 @@ -29,6 +29,12 @@ #include <string.h> #include <setjmp.h> #include <signal.h> +#include <unistd.h> + +/* Which outputs should be displayed. */ +int disp_HVM = 1; +int disp_PV = 1; +int disp_NOXEN = 1; static void cpuid(uint32_t idx, uint32_t *eax, @@ -66,8 +72,9 @@ found: cpuid(base + 1, &eax, &ebx, &ecx, &edx, pv_context); - printf("Running in %s context on Xen v%d.%d.\n", - pv_context ? "PV" : "HVM", (uint16_t)(eax >> 16), (uint16_t)eax); + if ((pv_context && disp_PV) || (!pv_context && disp_HVM)) + printf("Running in %s context on Xen v%d.%d.\n", + pv_context ? "PV" : "HVM", (uint16_t)(eax >> 16), (uint16_t)eax); return pv_context ? 1 : 2; } @@ -78,10 +85,42 @@ longjmp(sigill_jmp, 1); } -int main(void) +static void usage(void) +{ + printf("usage:\n\n"); + printf(" xen_detect [options]\n\n"); + printf("options:\n"); + printf(" -P, print output if running in PV context.\n"); + printf(" -H, print output if running in HVM context.\n"); + printf(" -N, print output if not running in any Xen context.\n"); +}; + +int main(int argc, char **argv) { /* 0 - no Xen, 1 - PV Xen, 2 - HVM Xen */ int rc = 0; + int ch; + + while ((ch = getopt(argc, argv, "PHN?h")) != -1 ) { + switch (ch) { + case 'h': + case '?': + usage(); + return(-1); + case 'H': + disp_HVM = 1; + disp_PV = disp_NOXEN = 0; + break; + case 'P': + disp_PV = 1; + disp_HVM = disp_NOXEN = 0; + break; + case 'N': + disp_NOXEN = 1; + disp_PV = disp_HVM = 0; + break; + } + } /* Check for execution in HVM context. */ if ( (rc = check_for_xen(0)) ) @@ -97,6 +136,7 @@ && (rc = check_for_xen(1)) ) return rc; - printf("Not running on Xen.\n"); + if (disp_NOXEN) + printf("Not running on Xen.\n"); return 0; } _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |