[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v4 8/8] BitmapLog: python script for extracting
From: |
Dr. David Alan Gilbert |
Subject: |
Re: [Qemu-devel] [PATCH v4 8/8] BitmapLog: python script for extracting bitmap from a binary file |
Date: |
Fri, 18 Jul 2014 12:17:18 +0100 |
User-agent: |
Mutt/1.5.23 (2014-03-12) |
* Sanidhya Kashyap (address@hidden) wrote:
> Signed-off-by: Sanidhya Kashyap <address@hidden>
I'm not really a python-person, but one observation:
> +def get_string(value, length):
> + name = struct.unpack('<'+str(length)+'s', value)[0]
> + for i in range(len(name)):
> + if name[i] == '\x00':
> + return name[:i]
Would it have been easier for you to format the strings in the stream
the same way the migration does it; i.e. a length byte followed by the text
of the string?
Dave
> +
> +def dump_ram_block_info(infile):
> + total_blocks = get_integer(infile.read(int_bytes))
> + for i in range(total_blocks):
> + block_name = get_string(infile.read(string_bytes), string_bytes)
> + block_offset =
> get_unsigned_long_integer(infile.read(long_bytes))
> + block_length =
> get_unsigned_long_integer(infile.read(long_bytes))
> + block_list.append(dict(name=block_name, offset=block_offset,
> length=block_length))
> + print block_list
> +
> +def dump_bitmap(infile, bitmap_length):
> + marker = 'M'
> + count = 0
> + value = ' '
> + while True:
> + if len(value) == 0 or marker != 'M':
> + print len(complete_bitmap_list)
> + print "issue with the dump"
> + return
> + bitmap_list = []
> + bitmap_raw_value = infile.read(long_bytes * bitmap_length)
> + if not bitmap_raw_value:
> + print len(bitmap_raw_value)
> + break
> + count+=1
> + for i in range(bitmap_length):
> + mark = i * long_bytes
> +
> bitmap_list.append(hex(get_unsigned_long_integer(bitmap_raw_value[mark:mark+long_bytes])))
> + complete_bitmap_list.append(bitmap_list)
> + value = infile.read(1)
> + marker = get_char(value)
> + print complete_bitmap_list
> +
> +def main():
> + extracter = argparse.ArgumentParser(description='Extract dirty bitmap
> from binary file.')
> + extracter.add_argument('infile', help='Input file to extract the
> bitmap')
> + args = extracter.parse_args()
> + print 'The filename is {}'.format(args.infile)
> +
> + infile = open(format(args.infile), 'rb')
> +
> + ram_bitmap_pages = get_long_integer(infile.read(long_bytes))
> + print ram_bitmap_pages
> + dump_ram_block_info(infile)
> + bitmap_length = ram_bitmap_pages / (long_bytes * byte_size)
> + if ram_bitmap_pages % (long_bytes * byte_size) != 0:
> + bitmap_length += 1
> + print bitmap_length
> +
> + dump_bitmap(infile, bitmap_length);
> +
> + infile.close()
> +
> +if __name__ == '__main__':
> + main()
> --
> 1.9.3
>
--
Dr. David Alan Gilbert / address@hidden / Manchester, UK
- Re: [Qemu-devel] [PATCH v4 4/8] BitmapLog: hmp interface for dirty bitmap dump, (continued)
- [Qemu-devel] [PATCH v4 5/8] BitmapLog: cancel mechanism for an already running dump bitmap process, Sanidhya Kashyap, 2014/07/17
- [Qemu-devel] [PATCH v4 6/8] BitmapLog: set the frequency of the dump bitmap process, Sanidhya Kashyap, 2014/07/17
- [Qemu-devel] [PATCH v4 7/8] BitmapLog: get the information about the parameters, Sanidhya Kashyap, 2014/07/17
- [Qemu-devel] [PATCH v4 8/8] BitmapLog: python script for extracting bitmap from a binary file, Sanidhya Kashyap, 2014/07/17
- Re: [Qemu-devel] [PATCH v4 8/8] BitmapLog: python script for extracting bitmap from a binary file,
Dr. David Alan Gilbert <=
- Re: [Qemu-devel] [PATCH v4 0/8] Obtain dirty bitmap via VM logging, Dr. David Alan Gilbert, 2014/07/18
- Re: [Qemu-devel] [PATCH v4 0/8] Obtain dirty bitmap via VM logging, Eric Blake, 2014/07/18