[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH v5 10/17] xenctx: Add -m (--memory) <maddr> option to dump memory at maddr.



On Thu, 2014-03-20 at 15:06 -0400, Don Slutz wrote:
> Currently not supported on ARM.
> 
> New routine read_mem_word() will correctly read a word that crosses
> a page boundary.  It will not fault if the 2nd page can not be
> mapped.
> 
> Here is an example:
> Memory (address ffffffff803ddf90):
>  ffffffff80048d19 0000000000200800 ffffffff803e7801 0000000000086800
>  0000000000000000 ffffffff80430720 ffffffff803e722f 80008e000010019c
>  00000000ffffffff 0000000000000000 0000000000000000 0000000000200000
>  0000000000000000 0000000000000000 0000000000000000 00cf9b000000ffff
>  00af9b000000ffff 00cf93000000ffff 00cffb000000ffff 00cff3000000ffff
> 
> Signed-off-by: Don Slutz <Don@xxxxxxxxxxxxxxx>
> ---
> v5: Remove extra #ifndef.  Make common routine print_lines().
> 
>  tools/xentrace/xenctx.c | 232 
> +++++++++++++++++++++++++++++++++---------------
>  1 file changed, 162 insertions(+), 70 deletions(-)
> 
> diff --git a/tools/xentrace/xenctx.c b/tools/xentrace/xenctx.c
> index 5732665..13f56ed 100644
> --- a/tools/xentrace/xenctx.c
> +++ b/tools/xentrace/xenctx.c
> @@ -33,23 +33,6 @@
>  #define DEFAULT_BYTES_PER_LINE 32
>  #define DEFAULT_LINES 5
>  
> -static struct xenctx {
> -    xc_interface *xc_handle;
> -    int domid;
> -    int frame_ptrs;
> -    int stack_trace;
> -    int disp_all;
> -    int multiple_pages;
> -    int bytes_per_line;
> -    int lines;
> -    int decode_as_ascii;
> -    int tag_stack_dump;
> -    int tag_call_trace;
> -    int all_vcpus;
> -    int self_paused;
> -    xc_dominfo_t dominfo;
> -} xenctx;
> -
>  #if defined (__i386__) || defined (__x86_64__)
>  typedef unsigned long long guest_word_t;
>  #define FMT_32B_WORD "%08llx"
> @@ -73,6 +56,27 @@ typedef uint64_t guest_word_t;
>  
>  #define MAX_BYTES_PER_LINE 128
>  
> +static struct xenctx {
> +    xc_interface *xc_handle;
> +    int domid;
> +    int frame_ptrs;
> +    int stack_trace;
> +    int disp_all;
> +    int multiple_pages;
> +    int bytes_per_line;
> +    int lines;
> +    int decode_as_ascii;
> +    int tag_stack_dump;
> +    int tag_call_trace;
> +    int all_vcpus;
> +#ifndef NO_TRANSLATION
> +    guest_word_t mem_addr;
> +    int do_memory;
> +#endif
> +    int self_paused;
> +    xc_dominfo_t dominfo;
> +} xenctx;
> +

This motion seems to be unmotivated by the commit message.

(I've no idea why there is a struct for this stuff anyway, even though
there is a good chance I added it, it could just as easily be globals in
a program of this sort)

>  int main(int argc, char **argv)
>  {
>      int ch;
>      int ret;
> +#ifndef NO_TRANSLATION
> +    static const char *sopts = "fs:hak:SCn:b:l:DtTm:";
> +#else
>      static const char *sopts = "fs:hak:SCn:b:l:DtT";
> +#endif

     static const char *sopts = "fs:hak:SCn:b:l:DtT"
#ifdef ....
                                "m:"
#endif
        ;

Or something to avoid that massive repetition. Another possibility:

#ifndef NO_TRANSLATION
#define TRANSLATION_OPTS "m:"
#else
#define TRANSLATION_OPTS
#endif
                sopts = "fs:....." TRANS...._OPTS

Ian.



_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.