mirror of
https://github.com/ARM-software/devlib.git
synced 2025-09-22 20:01:53 +01:00
Compare commits
6 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
40274101ad | ||
|
b53245344b | ||
|
961f9576e5 | ||
|
d4c8b0f222 | ||
|
a7cfd28bd0 | ||
|
701e6adf7a |
@@ -363,3 +363,16 @@ class CpufreqModule(Module):
|
||||
"done"\
|
||||
.format(governor), as_root=True)
|
||||
|
||||
def trace_frequencies(self):
|
||||
"""
|
||||
Report current frequencies on trace file
|
||||
"""
|
||||
self.target.execute(
|
||||
'FREQS=$(cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_cur_freq); '
|
||||
'CPU=0; for F in $FREQS; do '
|
||||
' echo "cpu_frequency: state=$F cpu_id=$CPU" > /sys/kernel/debug/tracing/trace_marker; '
|
||||
' let CPU++; '
|
||||
'done',
|
||||
as_root=True
|
||||
)
|
||||
|
||||
|
@@ -176,6 +176,7 @@ class Target(object):
|
||||
self.platform.init_target_connection(self)
|
||||
tid = id(threading.current_thread())
|
||||
self._connections[tid] = self.get_connection(timeout=timeout)
|
||||
self._resolve_paths()
|
||||
self.busybox = self.get_installed('busybox')
|
||||
self.platform.update_from_target(self)
|
||||
self._update_modules('connected')
|
||||
@@ -401,8 +402,9 @@ class Target(object):
|
||||
return self.path.join(path, name)
|
||||
except TargetError:
|
||||
pass # directory does not exist or no executable premssions
|
||||
if name in self.list_directory(self.executables_directory):
|
||||
return self.path.join(self.executables_directory, name)
|
||||
if self.file_exists(self.executables_directory):
|
||||
if name in self.list_directory(self.executables_directory):
|
||||
return self.path.join(self.executables_directory, name)
|
||||
|
||||
which = get_installed
|
||||
|
||||
@@ -437,6 +439,9 @@ class Target(object):
|
||||
else:
|
||||
self.logger.debug('Module {} is already installed.'.format(mod.name))
|
||||
|
||||
def _resolve_paths(self):
|
||||
raise NotImplementedError()
|
||||
|
||||
|
||||
class LinuxTarget(Target):
|
||||
|
||||
@@ -473,13 +478,6 @@ class LinuxTarget(Target):
|
||||
|
||||
def connect(self, timeout=None):
|
||||
super(LinuxTarget, self).connect(timeout=timeout)
|
||||
if self.working_directory is None:
|
||||
if self.connected_as_root:
|
||||
self.working_directory = '/root/devlib-target'
|
||||
else:
|
||||
self.working_directory = '/home/{}/devlib-target'.format(self.user)
|
||||
if self.executables_directory is None:
|
||||
self.executables_directory = self.path.join(self.working_directory, 'bin')
|
||||
|
||||
def kick_off(self, command, as_root=False):
|
||||
command = 'sh -c "{}" 1>/dev/null 2>/dev/null &'.format(escape_double_quotes(command))
|
||||
@@ -547,6 +545,15 @@ class LinuxTarget(Target):
|
||||
message = e.message.split('OUTPUT:', 1)[1].strip() # pylint: disable=no-member
|
||||
self.logger.debug('Could not take screenshot: {}'.format(message))
|
||||
|
||||
def _resolve_paths(self):
|
||||
if self.working_directory is None:
|
||||
if self.connected_as_root:
|
||||
self.working_directory = '/root/devlib-target'
|
||||
else:
|
||||
self.working_directory = '/home/{}/devlib-target'.format(self.user)
|
||||
if self.executables_directory is None:
|
||||
self.executables_directory = self.path.join(self.working_directory, 'bin')
|
||||
|
||||
|
||||
class AndroidTarget(Target):
|
||||
|
||||
@@ -585,10 +592,6 @@ class AndroidTarget(Target):
|
||||
return (0, 0)
|
||||
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
super(AndroidTarget, self).__init__(*args, **kwargs)
|
||||
self._file_transfer_cache = None
|
||||
|
||||
def reset(self, fastboot=False): # pylint: disable=arguments-differ
|
||||
try:
|
||||
self.execute('reboot {}'.format(fastboot and 'fastboot' or ''),
|
||||
@@ -608,11 +611,6 @@ class AndroidTarget(Target):
|
||||
# always disconnect first.
|
||||
adb_disconnect(device)
|
||||
super(AndroidTarget, self).connect(timeout=timeout)
|
||||
if self.working_directory is None:
|
||||
self.working_directory = '/data/local/tmp/devlib-target'
|
||||
self._file_transfer_cache = self.path.join(self.working_directory, '.file-cache')
|
||||
if self.executables_directory is None:
|
||||
self.executables_directory = self.path.join(self.working_directory, 'bin')
|
||||
|
||||
if check_boot_completed:
|
||||
boot_completed = boolean(self.getprop('sys.boot_completed'))
|
||||
@@ -793,6 +791,13 @@ class AndroidTarget(Target):
|
||||
if not self.is_screen_on():
|
||||
self.execute('input keyevent 26')
|
||||
|
||||
def _resolve_paths(self):
|
||||
if self.working_directory is None:
|
||||
self.working_directory = '/data/local/tmp/devlib-target'
|
||||
self._file_transfer_cache = self.path.join(self.working_directory, '.file-cache')
|
||||
if self.executables_directory is None:
|
||||
self.executables_directory = self.path.join(self.working_directory, 'bin')
|
||||
|
||||
def _ensure_executables_directory_is_writable(self):
|
||||
matched = []
|
||||
for entry in self.list_file_systems():
|
||||
@@ -954,12 +959,11 @@ class LocalLinuxTarget(LinuxTarget):
|
||||
|
||||
conn_cls = LocalConnection
|
||||
|
||||
def connect(self, timeout=None):
|
||||
def _resolve_paths(self):
|
||||
if self.working_directory is None:
|
||||
self.working_directory = '/tmp'
|
||||
if self.executables_directory is None:
|
||||
self.executables_directory = '/tmp'
|
||||
super(LocalLinuxTarget, self).connect(timeout)
|
||||
|
||||
|
||||
def _get_model_name(section):
|
||||
|
@@ -101,8 +101,14 @@ class FtraceCollector(TraceCollector):
|
||||
if self.automark:
|
||||
self.mark_start()
|
||||
self.target.execute('{} start {}'.format(self.target_binary, self.event_string), as_root=True)
|
||||
if 'cpufreq' in self.target.modules:
|
||||
self.logger.debug('Trace CPUFreq frequencies')
|
||||
self.target.cpufreq.trace_frequencies()
|
||||
|
||||
def stop(self):
|
||||
if 'cpufreq' in self.target.modules:
|
||||
self.logger.debug('Trace CPUFreq frequencies')
|
||||
self.target.cpufreq.trace_frequencies()
|
||||
self.stop_time = time.time()
|
||||
if self.automark:
|
||||
self.mark_stop()
|
||||
|
2
setup.py
2
setup.py
@@ -59,7 +59,7 @@ for root, dirs, files in os.walk(devlib_dir):
|
||||
params = dict(
|
||||
name='devlib',
|
||||
description='A framework for automating workload execution and measurment collection on ARM devices.',
|
||||
version='0.0.1',
|
||||
version='0.0.3',
|
||||
packages=packages,
|
||||
package_data=data_files,
|
||||
url='N/A',
|
||||
|
Reference in New Issue
Block a user