Skip to content

Commit

Permalink
add wait
Browse files Browse the repository at this point in the history
  • Loading branch information
mehrdadh committed Jun 10, 2021
1 parent f1486ef commit a6d9e70
Showing 1 changed file with 21 additions and 0 deletions.
21 changes: 21 additions & 0 deletions python/tvm/micro/contrib/zephyr.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,8 @@
import shutil
import subprocess
import sys
import threading
import queue

import yaml

Expand Down Expand Up @@ -630,6 +632,8 @@ def __init__(self, base_dir, startup_timeout_sec=5.0, qemu_debugger=None, **kwar
self.fd_transport = None
self.pipe_dir = None
self.qemu_debugger = qemu_debugger
self._queue = queue.Queue()
self._qemu_ready_msg = "Qready"

def timeouts(self):
return TransportTimeouts(
Expand Down Expand Up @@ -658,7 +662,9 @@ def open(self):
["make", "run", f"QEMU_PIPE={self.pipe}"],
cwd=self.base_dir,
**self.kwargs,
stdout=subprocess.PIPE,
)
self._wait_for_qemu()

if self.qemu_debugger is not None:
self.qemu_debugger.start()
Expand Down Expand Up @@ -703,6 +709,21 @@ def write(self, data, timeout_sec):
raise TransportClosedError()
return self.fd_transport.write(data, timeout_sec)

def _qemu_check_stdout(self):
for line in self.proc.stdout:
line = str(line)
_LOG.debug(line)
if "[QEMU] CPU" in line:
self._queue.put(self._qemu_ready_msg)
return

def _wait_for_qemu(self):
threading.Thread(target=self._qemu_check_stdout, daemon=True).start()
while True:
item = self._queue.get()
if item == self._qemu_ready_msg:
return True


class ZephyrDebugger(debugger.GdbDebugger):
"""A Zephyr debugger implementation."""
Expand Down

0 comments on commit a6d9e70

Please sign in to comment.