PATH:
usr
/
lib
/
python2.7
/
site-packages
/
tuned
/
plugins
from . import base import glob import re import os.path from .decorators import * import tuned.logs from subprocess import * from tuned.utils.commands import commands log = tuned.logs.get() class SysfsPlugin(base.Plugin): """ Plugin for applying custom sysfs options, using specific plugins is preferred. """ # TODO: resolve possible conflicts with sysctl settings from other plugins def __init__(self, *args, **kwargs): super(SysfsPlugin, self).__init__(*args, **kwargs) self._has_dynamic_options = True self._cmd = commands() def _instance_init(self, instance): instance._has_dynamic_tuning = False instance._has_static_tuning = True instance._sysfs = dict([(os.path.normpath(key_value[0]), key_value[1]) for key_value in list(instance.options.items())]) instance._sysfs_original = {} def _instance_cleanup(self, instance): pass def _instance_apply_static(self, instance): for key, value in list(instance._sysfs.items()): v = self._variables.expand(value) for f in glob.iglob(key): if self._check_sysfs(f): instance._sysfs_original[f] = self._read_sysfs(f) self._write_sysfs(f, v) else: log.error("rejecting write to '%s' (not inside /sys)" % f) def _instance_verify_static(self, instance, ignore_missing, devices): ret = True for key, value in list(instance._sysfs.items()): v = self._variables.expand(value) for f in glob.iglob(key): if self._check_sysfs(f): curr_val = self._read_sysfs(f) if self._verify_value(f, v, curr_val, ignore_missing) == False: ret = False return ret def _instance_unapply_static(self, instance, full_rollback = False): for key, value in list(instance._sysfs_original.items()): self._write_sysfs(key, value) def _check_sysfs(self, sysfs_file): return re.match(r"^/sys/.*", sysfs_file) def _read_sysfs(self, sysfs_file): data = self._cmd.read_file(sysfs_file).strip() if len(data) > 0: return self._cmd.get_active_option(data, False) else: return None def _write_sysfs(self, sysfs_file, value): return self._cmd.write_to_file(sysfs_file, value)
[-] plugin_script.pyo
[edit]
[-] hotplug.py
[edit]
[-] plugin_net.pyo
[edit]
[-] __init__.pyo
[edit]
[-] repository.pyo
[edit]
[-] plugin_systemd.pyc
[edit]
[-] plugin_systemd.pyo
[edit]
[-] plugin_net.pyc
[edit]
[-] base.pyo
[edit]
[-] plugin_mounts.pyc
[edit]
[-] plugin_cpu.pyo
[edit]
[-] plugin_sysctl.pyo
[edit]
[-] hotplug.pyc
[edit]
[-] repository.py
[edit]
[-] exceptions.py
[edit]
[+]
..
[-] plugin_vm.pyc
[edit]
[-] plugin_selinux.py
[edit]
[-] plugin_sysfs.pyo
[edit]
[-] plugin_mounts.pyo
[edit]
[-] exceptions.pyc
[edit]
[-] plugin_video.py
[edit]
[-] plugin_bootloader.pyc
[edit]
[-] decorators.pyo
[edit]
[-] __init__.pyc
[edit]
[-] plugin_sysfs.py
[edit]
[-] plugin_usb.pyc
[edit]
[-] plugin_scsi_host.py
[edit]
[-] exceptions.pyo
[edit]
[-] plugin_scheduler.pyo
[edit]
[-] plugin_disk.pyc
[edit]
[-] plugin_modules.py
[edit]
[-] plugin_eeepc_she.pyc
[edit]
[-] base.py
[edit]
[-] plugin_selinux.pyc
[edit]
[-] plugin_usb.pyo
[edit]
[-] plugin_script.py
[edit]
[-] hotplug.pyo
[edit]
[-] plugin_cpu.py
[edit]
[-] plugin_cpu.pyc
[edit]
[-] plugin_modules.pyo
[edit]
[-] plugin_script.pyc
[edit]
[-] decorators.pyc
[edit]
[-] plugin_sysctl.py
[edit]
[-] plugin_scheduler.py
[edit]
[-] plugin_systemd.py
[edit]
[-] plugin_mounts.py
[edit]
[-] repository.pyc
[edit]
[-] base.pyc
[edit]
[-] plugin_sysfs.pyc
[edit]
[-] plugin_audio.py
[edit]
[-] plugin_scsi_host.pyo
[edit]
[-] plugin_vm.pyo
[edit]
[-] plugin_bootloader.py
[edit]
[-] plugin_selinux.pyo
[edit]
[+]
instance
[-] plugin_modules.pyc
[edit]
[-] plugin_eeepc_she.py
[edit]
[-] plugin_vm.py
[edit]
[-] plugin_bootloader.pyo
[edit]
[-] plugin_scsi_host.pyc
[edit]
[-] __init__.py
[edit]
[-] plugin_audio.pyo
[edit]
[-] decorators.py
[edit]
[-] plugin_audio.pyc
[edit]
[-] plugin_scheduler.pyc
[edit]
[-] plugin_sysctl.pyc
[edit]
[-] plugin_video.pyc
[edit]
[-] plugin_disk.py
[edit]
[-] plugin_disk.pyo
[edit]
[-] plugin_eeepc_she.pyo
[edit]
[-] plugin_net.py
[edit]
[-] plugin_video.pyo
[edit]
[-] plugin_usb.py
[edit]