Subversion Repositories freemyipod

Rev

Rev 502 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 502 Rev 506
Line 462... Line 462...
462
        self.logger.info("Threads: %d, CPU load: %.1f%%, kernel load: %.1f%%, user load: %.1f%%\n\n"
462
        self.logger.info("Threads: %d, CPU load: %.1f%%, kernel load: %.1f%%, user load: %.1f%%\n\n"
463
                         % (len(threads), cpuload * 100, coreload * 100, threadload * 100))
463
                         % (len(threads), cpuload * 100, coreload * 100, threadload * 100))
464
        self.logger.info("Thread dump:\n")
464
        self.logger.info("Thread dump:\n")
465
        for thread in threads:
465
        for thread in threads:
466
            self.logger.info(thread.name+":\n", 2)
466
            self.logger.info(thread.name+":\n", 2)
467
            self.logger.info("Thread id: "      + str(thread.id)+"\n", 4)
467
            self.logger.info("Threadstruct address: " + self._hex(thread.addr)+"\n", 4)
468
            self.logger.info("Thread type: "    + thread.type+"\n", 4)
468
            self.logger.info("Thread type: "    + str(thread.thread_type)+"\n", 4)
469
            self.logger.info("Thread state: "   + thread.state+"\n", 4)
469
            self.logger.info("Thread state: "   + str(thread.state)+"\n", 4)
470
            self.logger.info("Block type: "     + thread.block_type+"\n", 4)
470
            self.logger.info("Block type: "     + str(thread.block_type)+"\n", 4)
471
            self.logger.info("Blocked by: "     + self._hex(thread.blocked_by_ptr)+"\n", 4)
471
            self.logger.info("Blocked by: "     + self._hex(thread.blocked_by)+"\n", 4)
472
            self.logger.info("Priority: "       + str(thread.priority)+"/255\n", 4)
472
            self.logger.info("Priority: "       + str(thread.priority)+"/255\n", 4)
473
            self.logger.info("Current CPU load: %.1f%%\n" % ((thread.cpuload * 100) / 255.), 4)
473
            self.logger.info("Current CPU load: %.1f%%\n" % ((thread.cpuload * 100) / 255.), 4)
474
            self.logger.info("CPU time (total): "+str(datetime.timedelta(microseconds = thread.cputime_total))+"\n", 4)
474
            self.logger.info("CPU time (total): "+str(datetime.timedelta(microseconds = thread.cputime_total))+"\n", 4)
475
            self.logger.info("Stack address: "  + self._hex(thread.stackaddr)+"\n", 4)
475
            self.logger.info("Stack address: "  + self._hex(thread.stack)+"\n", 4)
476
            self.logger.info("Registers:\n", 4)
476
            self.logger.info("Registers:\n", 4)
477
            for registerrange in range(4):
477
            for registerrange in range(4):
478
                self.logger.info("      ")
478
                self.logger.info("      ")
479
                for register in range(registerrange, 16, 4):
479
                for register in range(registerrange, 16, 4):
480
                    registerrepr = "r"+str(register)
480
                    registerrepr = "r"+str(register)
481
                    self.logger.info("{0:3s}: 0x{1:08X}   ".format(registerrepr, thread.regs["r"+str(register)]))
481
                    self.logger.info("{0:3s}: 0x{1:08X}   ".format(registerrepr, thread.regs[register]))
482
                self.logger.info("\n")
482
                self.logger.info("\n")
483
            self.logger.info("cpsr: 0x{0:08X}".format(thread.regs.cpsr), 6)
483
            self.logger.info("cpsr: 0x{0:08X}".format(thread.cpsr), 6)
484
            self.logger.info("\n")
484
            self.logger.info("\n")
485
    
485
    
486
    @command
486
    @command
487
    def lockscheduler(self):
487
    def lockscheduler(self):
488
        """
488
        """