Class: Jkr::Cpufreq::Config

Inherits:
Object
  • Object
show all
Defined in:
lib/jkr/cpufreq.rb

Defined Under Namespace

Classes: CpuConfig

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(*args) ⇒ Config

Returns a new instance of Config.



44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
# File 'lib/jkr/cpufreq.rb', line 44

def initialize(*args)
  @cpuconfigs = \
  if args.size == 0
    self.current_config
  elsif args.size == 1 && args.first.is_a?(Hash)
    arg = args.first
    if ! arg[:governor]
      raise ArgumentError.new("governor must be specified.")
    elsif arg[:governor] == "userspace" && ! arg[:frequency]
      raise ArgumentError.new("parameter :frequency is required for userspece governor")
    end

    Array.new(Cpufreq.num_cpu()){|idx|
      CpuConfig.new(idx, arg[:governor], arg)
    }
  elsif args.size == 1 && args.first.is_a?(Array) && args.first.every?{|arg| arg.is_a? CpuConfig}
    args.first
  elsif args.size == Cpufreq.num_cpu() && args.every?{|arg| arg.is_a? CpuConfig}
    args
  end
end

Instance Attribute Details

#cpuconfigsObject (readonly)

Returns the value of attribute cpuconfigs.



42
43
44
# File 'lib/jkr/cpufreq.rb', line 42

def cpuconfigs
  @cpuconfigs
end

Class Method Details

.getObject



66
67
68
69
70
71
# File 'lib/jkr/cpufreq.rb', line 66

def self.get()
  cpuconfigs = Array.new(Cpufreq.num_cpu){|cpu_idx|
    CpuConfig.read_config(cpu_idx)
  }
  self.new(cpuconfigs)
end

.set(config) ⇒ Object



73
74
75
76
77
# File 'lib/jkr/cpufreq.rb', line 73

def self.set(config)
  config.cpuconfigs.each_with_index{|cpuconfig, idx|
    CpuConfig.write_config(idx, cpuconfig)
  }
end

Instance Method Details

#to_sObject



79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
# File 'lib/jkr/cpufreq.rb', line 79

def to_s
  cpuconfig = @cpuconfigs.first

  ret = cpuconfig.governor

  suffix = case cpuconfig.governor
           when /\Aperformance\Z/
             nil
           when /\Apowersave\Z/
             nil
           when /\Auserspace\Z/
             cpuconfig.params[:frequency] / 1000000.0
           when /\Aondemand\Z/
             nil
           end

  if suffix
    ret += ":freq=#{suffix}GHz"
  end

  ret
end