Exemplo n.º 1
0
    def createRecordFromControlBlock(self, threadPrev, dbg):
        members = threadPrev.dereferencePointer(Rtx5.getCType(
            self.tcbType)).getStructureMembers()

        if (members["id"].readAsNumber() == getControlBlockId(self.tcbType)):
            return [
                function(members, threadPrev) for function in self.functions
            ]

        return []
Exemplo n.º 2
0
def makeTaskWaitersCell(members, name):
    tcbPtr = members[name]
    result = []

    while nonNullPtr(tcbPtr):
        members = getPtrMemBers(tcbPtr)
        result.append(str(Rtx5.getDisplayableTaskId(tcbPtr, members)))
        tcbPtr = members["thread_next"]

    return createTextCell(', '.join(result))
Exemplo n.º 3
0
def isOSInitialised(debugger):
    try:
        return Rtx5.isKernelInitialised(debugger)
    except DebugSessionException:
        return False
Exemplo n.º 4
0
def dereferenceThreadPointer(tcbPtr):
    return tcbPtr.dereferencePointer(Rtx5.getCType("Thread"))
Exemplo n.º 5
0
def getControlBlockId(cbName):
    return Rtx5.getControlBlockIdentifiers()[cbName]
Exemplo n.º 6
0
def makeStateCell(members):
    return createTextCell(
        Rtx5.getTaskState(members["state"].readAsNumber(), members))
Exemplo n.º 7
0
def makeTaskIdCell(tcbPtr, members):
    return createTextCell(Rtx5.getDisplayableTaskId(tcbPtr, members))
Exemplo n.º 8
0
def isThreadControlBlock(cbPtr):
    return Rtx5.getControlBlockIdentifiers()['Thread'] == getPtrMemBers(
        cbPtr)["id"].readAsNumber()
Exemplo n.º 9
0
 def getControlBlocks(self, dbg):
     return Rtx5.getActiveTasks(dbg)
Exemplo n.º 10
0
def getControlBlockName(cbId):
    return next((name
                 for (name, id) in Rtx5.getControlBlockIdentifiers().items()
                 if id == cbId), None)