summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDhananjay Balan <mb.dhananjay@gmail.com>2013-07-28 13:01:06 +0530
committerChris Johns <chrisj@rtems.org>2014-08-25 09:52:40 +1000
commitc3d06d531c497c665671386bc32dd18fbfac49b3 (patch)
tree5a056f251fc4fa0757e267f8a9736d72b50f9a5b
parent09086b415db7bb08cca41fc3fff212bbaece327a (diff)
downloadrtems-tools-c3d06d531c497c665671386bc32dd18fbfac49b3.tar.bz2
Abstraction for HEAP.
Heap_Control Abstraction is added. It will need some more grooming though.
-rw-r--r--tools/gdb/python/heaps.py62
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