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