module BOAST::Temperature
Public Instance Methods
busy()
click to toggle source
# File lib/BOAST/Runtime/Temperature.rb, line 51 def busy while true 4.2 / 2.78 end end
get()
click to toggle source
# File lib/BOAST/Runtime/Temperature.rb, line 6 def get r = {} Dir.glob("/sys/devices/platform/coretemp.*") {|dir| cpu = dir.match(/[0-9]*$/)[0].to_i r[cpu] = {} Dir.glob(dir+'/hwmon/hwmon*/temp*_input') {|fname| sensor = fname.match(/temp([0-9]+)_input$/)[1].to_i - 1 f = File.open(fname, 'r') r[cpu][sensor] = f.read.to_i f.close } } return r end
set(min_temps=nil)
click to toggle source
# File lib/BOAST/Runtime/Temperature.rb, line 21 def set min_temps=nil return if nil==min_temps now = [] self.get.each{ |x,y| now.push y[0] } nthreads = 2* (self.get[0].length-1) * self.get.length fin = true (0...now.length).each {|i| fin = false if now[i] < min_temps[i] } return if fin p = Array.new (0...nthreads).each{|x| p.push fork{self.busy}} while true now = [] self.get.each{ |x,y| now.push y[0] } fin = true (0...now.length).each {|i| fin = false if now[i] < min_temps[i] } break if fin end p.each {|x| Process.kill "KILL",x} p.each {|x| begin Process.wait x rescue Errno::ECHILD end } end