Home | History | Annotate | Download | only in multimedia
      1 # Copyright 2015 The Chromium OS Authors. All rights reserved.
      2 # Use of this source code is governed by a BSD-style license that can be
      3 # found in the LICENSE file.
      4 
      5 """Facade to access the system-related functionality."""
      6 
      7 import os
      8 
      9 from autotest_lib.client.bin import utils
     10 
     11 
     12 class SystemFacadeNativeError(Exception):
     13     """Error in SystemFacadeNative."""
     14     pass
     15 
     16 
     17 class SystemFacadeNative(object):
     18     """Facede to access the system-related functionality.
     19 
     20     The methods inside this class only accept Python native types.
     21 
     22     """
     23     SCALING_GOVERNOR_MODES = [
     24             'interactive',
     25             'performance',
     26             'ondemand',
     27             'powersave',
     28             ]
     29 
     30     def set_scaling_governor_mode(self, index, mode):
     31         """Set mode of CPU scaling governor on one CPU.
     32 
     33         @param index: CPU index starting from 0.
     34 
     35         @param mode: Mode of scaling governor, accept 'interactive' or
     36                      'performance'.
     37 
     38         @returns: The original mode.
     39 
     40         """
     41         if mode not in self.SCALING_GOVERNOR_MODES:
     42             raise SystemFacadeNativeError('mode %s is invalid' % mode)
     43 
     44         governor_path = os.path.join(
     45                 '/sys/devices/system/cpu/cpu%d' % index,
     46                 'cpufreq/scaling_governor')
     47         if not os.path.exists(governor_path):
     48             raise SystemFacadeNativeError(
     49                     'scaling governor of CPU %d is not available' % index)
     50 
     51         original_mode = utils.read_one_line(governor_path)
     52         utils.open_write_close(governor_path, mode)
     53 
     54         return original_mode
     55