aboutsummaryrefslogtreecommitdiffstats
path: root/experiment/litmus_util.py
diff options
context:
space:
mode:
authorJonathan Herman <hermanjl@cs.unc.edu>2012-11-26 17:06:27 -0500
committerJonathan Herman <hermanjl@cs.unc.edu>2012-11-26 17:06:27 -0500
commitb43b83beead92ff7cf28a5fe5a2710537268aae1 (patch)
treed9c29b14cd18a9df520f36d7e85eb460c30fa7a9 /experiment/litmus_util.py
parentcb8db5d30ee769304c2c2b00f2a7d9bcb3c4098f (diff)
Read locations of binary files from path instead of config.py.
Diffstat (limited to 'experiment/litmus_util.py')
-rw-r--r--experiment/litmus_util.py79
1 files changed, 0 insertions, 79 deletions
diff --git a/experiment/litmus_util.py b/experiment/litmus_util.py
deleted file mode 100644
index fb2b341..0000000
--- a/experiment/litmus_util.py
+++ /dev/null
@@ -1,79 +0,0 @@
1import re
2import time
3import subprocess
4import os
5import stat
6import config.config as conf
7
8def num_cpus():
9 '''Return the number of CPUs in the system.'''
10
11 lnx_re = re.compile(r'^(processor|online)')
12 cpus = 0
13
14 with open('/proc/cpuinfo', 'r') as f:
15 for line in f:
16 if lnx_re.match(line):
17 cpus += 1
18 return cpus
19
20def cpu_freq():
21 '''
22 The frequency (in MHz) of the CPU.
23 '''
24 reg = re.compile(r'^cpu MHz\s*:\s*(\d+)', re.M)
25 with open('/proc/cpuinfo', 'r') as f:
26 data = f.read()
27
28 match = re.search(reg, data)
29 if not match:
30 raise Exception("Cannot parse CPU frequency!")
31 return int(match.group(1))
32
33def switch_scheduler(switch_to_in):
34 '''Switch the scheduler to whatever is passed in.
35
36 This methods sleeps for two seconds to give Linux the chance to execute
37 schedule switching code. Raises an exception if the switch does not work.
38
39 '''
40
41 switch_to = str(switch_to_in).strip()
42
43 with open('/proc/litmus/active_plugin', 'w') as active_plugin:
44 subprocess.Popen(["echo", switch_to], stdout=active_plugin)
45
46 # it takes a bit to do the switch, sleep an arbitrary amount of time
47 time.sleep(2)
48
49 with open('/proc/litmus/active_plugin', 'r') as active_plugin:
50 cur_plugin = active_plugin.read().strip()
51
52 if switch_to != cur_plugin:
53 raise Exception("Could not switch to plugin: %s" % switch_to)
54
55def uname_matches(reg):
56 data = subprocess.check_output(["uname", "-r"])
57 return bool( re.match(reg, data) )
58
59def is_executable(fname):
60 '''Return whether the file passed in is executable'''
61 mode = os.stat(fname)[stat.ST_MODE]
62 return mode & stat.S_IXUSR and mode & stat.S_IRUSR
63
64def is_device(dev):
65 if not os.path.exists(dev):
66 return False
67 mode = os.stat(dev)[stat.ST_MODE]
68 return not (not mode & stat.S_IFCHR)
69
70def release_tasks():
71
72 try:
73 data = subprocess.check_output([conf.BINS['release']])
74 except subprocess.CalledProcessError:
75 raise Exception('Something went wrong in release_ts')
76
77 released = re.findall(r"([0-9]+) real-time", data)[0]
78
79 return int(released)