Files

40 lines
1.0 KiB
Python
Raw Permalink Normal View History

2025-02-12 09:54:05 -05:00
from QMP import QEMUMonitorProtocol
import re
class QConn:
def __init__(self, path):
self.qconn = QEMUMonitorProtocol(path)
self.qconn.connect()
self.runs = True
self.regs_cache = ""
def drop_cache(self):
self.regs_cache = ""
def stop(self):
self.human_cmd("stop")
self.runs = False
self.drop_cache()
def cont(self):
self.human_cmd("cont")
self.runs = True
def gpreg(self, name):
if self.runs or self.regs_cache == "":
self.regs_cache, err = self.human_cmd("info registers")
name = name.upper()
fd = re.search("{}=([\w]+)".format(name), self.regs_cache)
if fd is None:
return ""
return fd.group(1)
def human_cmd(self, line):
args = {}
args["command-line"] = line
resp = self.qconn.cmd("human-monitor-command", args)
if "error" in resp:
return (resp["error"]["desc"], 1)
return (resp["return"], 0)