diff options
author | Dhananjay Balan <mb.dhananjay@gmail.com> | 2013-07-28 13:01:06 +0530 |
---|---|---|
committer | Chris Johns <chrisj@rtems.org> | 2014-08-25 09:52:40 +1000 |
commit | c3d06d531c497c665671386bc32dd18fbfac49b3 (patch) | |
tree | 5a056f251fc4fa0757e267f8a9736d72b50f9a5b | |
parent | 09086b415db7bb08cca41fc3fff212bbaece327a (diff) |
Abstraction for HEAP.
Heap_Control Abstraction is added. It will need some more grooming
though.
-rw-r--r-- | tools/gdb/python/heaps.py | 62 |
1 files changed, 62 insertions, 0 deletions
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 |