From c3d06d531c497c665671386bc32dd18fbfac49b3 Mon Sep 17 00:00:00 2001 From: Dhananjay Balan Date: Sun, 28 Jul 2013 13:01:06 +0530 Subject: Abstraction for HEAP. Heap_Control Abstraction is added. It will need some more grooming though. --- tools/gdb/python/heaps.py | 62 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 tools/gdb/python/heaps.py diff --git a/tools/gdb/python/heaps.py b/tools/gdb/python/heaps.py new file mode 100644 index 0000000..4798912 --- /dev/null +++ b/tools/gdb/python/heaps.py @@ -0,0 +1,62 @@ +# +# RTEMS heap +# + +class block: + '''Abstract a heap block structure''' + + def __init__(self, blk): + self.block = blk + self.prev_size = self.block['prev_size'] + self.size_flag = self.block['size_and_flag'] + + def null(self): + if self.block: + return False + return True + + + def next(self): + if not self.null(): + self.block = self.block['next'] + + def prev(self): + if not self.null(): + self.block = self.block['prev'] + +class stats: + ''heap statistics'' + + def __init__(self,stat): + self.stat = stat + + def avail(self): + val = self.stat['size'] + return val + + def free(self): + return self.stat['free_size'] + + # ToDo : incorporate others + +def control: + '''Abstract a heap control structure''' + + def __init__(self, ctl): + self.ctl = ctl + + def first(self): + b = block(self.ctl['first_block']) + return b + + def last(self): + b = block(self.ctl['last_block']) + return b + + def free(self): + b = block(self.ctl['free_list']) + return b + + def stat(self): + st = stats(self.ctl['stats']) + return st \ No newline at end of file -- cgit v1.2.3