def __init__(self, proc, timeout=30): """ Class constructor. The arguments are as follows. * proc - the 'Proc' or 'SSH' object that defines the host to operate on. This object will keep a 'proc' reference and use it in various methods. * timeout - longest time in seconts to wait for data in the trace buffer. """ self._reader = None self._proc = proc self.timeout = timeout self.raw_line = None mntpoint = FSHelpers.mount_debugfs(proc=proc) self.ftpath = mntpoint.joinpath("tracing/trace") self.ftpipe_path = mntpoint.joinpath("tracing/trace_pipe") for path in (self.ftpath, self.ftpipe_path): if not FSHelpers.isfile(path, proc=proc): raise ErrorNotSupported( f"linux kernel function trace file was not found at " f"'{path}'{proc.hostmsg}") cmd = f"cat {self.ftpipe_path}" name = "stale wult function trace reader process" ProcHelpers.kill_processes(cmd, log=True, name=name, proc=self._proc) self._clear() self._reader = self._proc.run_async(cmd, shell=True)
def disable_ipv6(self): """Disable IPv6 for the network interface.""" path = Path("/proc/sys/net/ipv6/conf/{self.ifname}/disable_ipv6") if FSHelpers.isfile(path, proc=self._proc): with self._proc.open(path, "w") as fobj: fobj.write("1")
def _get_module_path(proc, name): """Return path to installed module. Return 'None', if module not found.""" cmd = f"modinfo -n {name}" stdout, _, exitcode = proc.run(cmd) if exitcode != 0: return None modpath = Path(stdout.strip()) if FSHelpers.isfile(modpath, proc): return modpath return None