Add subcommand

rtems tod - prints the time of day.
This commit is contained in:
Dhananjay Balan
2013-08-24 15:08:16 +05:30
committed by Chris Johns
parent a0bf9f207a
commit a245635a2e
4 changed files with 62 additions and 7 deletions

View File

@@ -16,4 +16,5 @@ rtems.rtems()
rtems.rtems_object()
rtems.rtems_semaphore()
rtems.rtems_task()
rtems.rtems_message_queue()
rtems.rtems_message_queue()
rtems.rtems_tod()

View File

@@ -13,6 +13,8 @@ class infotables:
"""Manage the object information tables."""
tables_types = {
'internal/time' : ('TOD_Control', '_TOD'),
'classic/tasks' : ('Thread_Control', '_RTEMS_tasks_Information'),
'classic/timers' : ('Timer_Control', '_Timer_Information'),
'classic/semaphores' : ('Semaphore_Control', '_Semaphore_Information'),
@@ -64,15 +66,21 @@ class infotables:
index = id.index()
return self.object_return(api, _class, index)
def object_return(self, api, _class, index):
def object_return(self, api, _class, index=-1):
n = self.name(api, _class)
self.load(n)
max = self.maximum(api, _class)
if index > max:
raise IndexError('object index out of range (%d)' % (max))
table_type = self.tables_types[n]
expr = '(' + table_type[0] + '*)' + \
table_type[1] + '.local_table[' + str(index) + ']'
if api == 'internal':
expr = '(' + table_type[0] + ')' + table_type[1]
else:
max = self.maximum(api, _class)
if index > max:
raise IndexError('object index out of range (%d)' % (max))
expr = '(' + table_type[0] + '*)' + \
table_type[1] + '.local_table[' + str(index) + ']'
return gdb.parse_and_eval(expr)
def is_string(self, api, _class):

View File

@@ -10,6 +10,7 @@ import re
import objects
import threads
import supercore
import classic
@@ -184,3 +185,23 @@ class rtems_barrier(rtems_index):
def instance(self, obj):
return classic.barrier(obj)
class rtems_tod(gdb.Command):
'''Print rtems time of day'''
api = 'internal'
_class = 'time'
def __init__(self):
self.__doc__ = 'Display RTEMS time of day'
super(rtems_tod, self).__init__ \
('rtems tod', gdb.COMMAND_STATUS,gdb.COMPLETE_NONE)
def invoke(self, arg, from_tty):
if arg:
print "warning: commad takes no arguments!"
obj = objects.information.object_return(self.api,self._class)
instance = supercore.time_of_day(obj)
instance.show()
objects.information.invalidate()

View File

@@ -5,6 +5,31 @@
import threads
import helper
class time_of_day:
'''Manage time of day object'''
def __init__(self, tod):
self.tod = tod
def now(self):
return self.tod['now']
def timer(self):
return self.tod['uptime']
def is_set(self):
return bool(self.tod['is_set'])
def show(self):
print ' Time Of Day'
if not self.is_set():
print ' Application has not set a TOD'
print ' Now:', self.now()
print ' Uptime:', self.timer()
class message_queue:
'''Manage a Supercore message_queue'''