Module: BOAST::Temperature

Extended by:
PrivateStateAccessor
Defined in:
lib/BOAST/Runtime/Temperature.rb

Class Method Summary collapse

Methods included from PrivateStateAccessor

address_size, address_size=, annotate, annotate=, annotate?, annotate_indepth_list, annotate_indepth_list=, annotate_level, annotate_level=, annotate_list, annotate_list=, architecture, architecture=, array_start, array_start=, chain_code, chain_code=, chain_code?, debug, debug=, debug?, debug_kernel_source, debug_kernel_source=, debug_kernel_source?, debug_source, debug_source=, debug_source?, decl_module, decl_module=, decl_module?, default_align, default_align=, default_int_signed, default_int_signed=, default_int_signed?, default_int_size, default_int_size=, default_real_size, default_real_size=, default_type, default_type=, disable_openmp, disable_openmp=, disable_openmp?, executable, executable=, executable?, ffi, ffi=, ffi?, fortran_line_length, fortran_line_length=, get_address_size, get_annotate, get_annotate_indepth_list, get_annotate_level, get_annotate_list, get_architecture, get_array_start, get_chain_code, get_debug, get_debug_kernel_source, get_debug_source, get_decl_module, get_default_align, get_default_int_signed, get_default_int_size, get_default_real_size, get_default_type, get_disable_openmp, get_executable, get_ffi, get_fortran_line_length, get_indent_increment, get_indent_level, get_keep_temp, get_lang, get_model, get_optimizer_log, get_optimizer_log_file, get_output, get_replace_constants, get_synchro, get_use_vla, get_verbose, indent_increment, indent_increment=, indent_level, indent_level=, keep_temp, keep_temp=, keep_temp?, lang, lang=, model, model=, optimizer_log, optimizer_log=, optimizer_log?, optimizer_log_file, optimizer_log_file=, output, output=, replace_constants, replace_constants=, replace_constants?, set_address_size, set_annotate, set_annotate_indepth_list, set_annotate_level, set_annotate_list, set_architecture, set_array_start, set_chain_code, set_debug, set_debug_kernel_source, set_debug_source, set_decl_module, set_default_align, set_default_int_signed, set_default_int_size, set_default_real_size, set_default_type, set_disable_openmp, set_executable, set_ffi, set_fortran_line_length, set_indent_increment, set_indent_level, set_keep_temp, set_lang, set_model, set_optimizer_log, set_optimizer_log_file, set_output, set_replace_constants, set_synchro, set_use_vla, set_verbose, synchro, synchro=, use_vla, use_vla=, use_vla?, verbose, verbose=, verbose?

Class Method Details

.busyObject



51
52
53
54
55
# File 'lib/BOAST/Runtime/Temperature.rb', line 51

def busy
  while true
    4.2 / 2.78
  end
end

.getObject



6
7
8
9
10
11
12
13
14
15
16
17
18
19
# 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) ⇒ Object



21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
# 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