diff options
author | Martin Braun <martin.braun@ettus.com> | 2017-12-12 09:59:50 -0800 |
---|---|---|
committer | Martin Braun <martin.braun@ettus.com> | 2017-12-22 15:05:58 -0800 |
commit | d3e6dd11406893bfbc5537dfbe74d8151bbc1280 (patch) | |
tree | 8663263b3c5a4ff7202e01a5f9c5c6bb23969829 /mpm/python/usrp_mpm/dtoverlay.py | |
parent | ea7cc7f8250cd9bdb41c1f22703d38be91fb6a84 (diff) | |
download | uhd-d3e6dd11406893bfbc5537dfbe74d8151bbc1280.tar.gz uhd-d3e6dd11406893bfbc5537dfbe74d8151bbc1280.tar.bz2 uhd-d3e6dd11406893bfbc5537dfbe74d8151bbc1280.zip |
mpm: Harmonize imports, tidy + sort modules
- Moved nijesdcore to cores/
- Moved udev, net, dtoverlay, uio to sys_utils/
- Made all imports non-relative (except in __init__.py files)
- Removed some unnecessary imports
- Reordered some imports for Python conventions
Diffstat (limited to 'mpm/python/usrp_mpm/dtoverlay.py')
-rw-r--r-- | mpm/python/usrp_mpm/dtoverlay.py | 129 |
1 files changed, 0 insertions, 129 deletions
diff --git a/mpm/python/usrp_mpm/dtoverlay.py b/mpm/python/usrp_mpm/dtoverlay.py deleted file mode 100644 index 7f1bf653f..000000000 --- a/mpm/python/usrp_mpm/dtoverlay.py +++ /dev/null @@ -1,129 +0,0 @@ -# -# Copyright 2017 Ettus Research (National Instruments) -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see <http://www.gnu.org/licenses/>. -# -""" -Manipulation of device tree overlays (Linux kernel) -""" - -import os -from .mpmlog import get_logger - -SYSFS_OVERLAY_BASE_DIR = '/sys/kernel/config/device-tree/overlays' -OVERLAY_DEFAULT_PATH = '/lib/firmware' - -def get_overlay_attrs(overlay_name): - """ - List those attributes that are connected to an overlay entry in a sysfs - node. - """ - overlay_path = os.path.join(SYSFS_OVERLAY_BASE_DIR, overlay_name) - attrs = {} - for attr_name in os.listdir(overlay_path): - try: - attr_val = open( - os.path.join(overlay_path, attr_name), 'r' - ).read().strip() - except OSError: - pass - if len(attr_val): - attrs[attr_name] = attr_val - return attrs - -def is_applied(overlay_name): - """ - Returns True if the overlay is already applied, False if not. - """ - try: - return open( - os.path.join(SYSFS_OVERLAY_BASE_DIR, overlay_name, 'status') - ).read().strip() == 'applied' - except IOError: - return False - -def list_overlays(applied_only=False): - """ - List all registered kernel modules. Returns a dict of dicts: - { - '<overlay_name>': { - # attributes - }, - } - - All the attributes come from sysfs. See get_overlay_attrs(). - - applied_only -- Only return those overlays that are already applied. - """ - return { - overlay_name: get_overlay_attrs(overlay_name) - for overlay_name in os.listdir(SYSFS_OVERLAY_BASE_DIR) - if not applied_only \ - or get_overlay_attrs(overlay_name).get('status') == 'applied' - } - -def list_available_overlays(path): - """ - List available overlay files (dtbo) - """ - path = path or OVERLAY_DEFAULT_PATH - return [x.strip()[:-5] for x in os.listdir(path) if x.endswith('.dtbo')] - -def apply_overlay(overlay_name): - """ - Applies the given overlay. Does not check if the overlay is loaded. - """ - get_logger("DTO").trace("Applying overlay `{}'...".format(overlay_name)) - overlay_path = os.path.join(SYSFS_OVERLAY_BASE_DIR, overlay_name) - if not os.path.exists(overlay_path): - os.mkdir(overlay_path) - open( - os.path.join(SYSFS_OVERLAY_BASE_DIR, overlay_name, 'path'), 'w' - ).write("{}.dtbo".format(overlay_name)) - -def apply_overlay_safe(overlay_name): - """ - Only apply an overlay if it's not yet applied. - - Finally, checks that the overlay was applied and throws an exception if not. - """ - if is_applied(overlay_name): - get_logger("DTO").debug( - "Overlay `{}' was already applied, not applying again.".format( - overlay_name - ) - ) - else: - apply_overlay(overlay_name) - if not is_applied(overlay_name): - raise RuntimeError("Failed to apply overlay `{}'".format(overlay_name)) - -def rm_overlay(overlay_name): - """ - Removes the given overlay. Does not check if the overlay is loaded. - """ - get_logger("DTO").trace("Removing overlay `{}'...".format(overlay_name)) - os.rmdir(os.path.join(SYSFS_OVERLAY_BASE_DIR, overlay_name)) - -def rm_overlay_safe(overlay_name): - """ - Only remove an overlay if it's already applied. - """ - if overlay_name in list(list_overlays(applied_only=True).keys()): - rm_overlay(overlay_name) - else: - get_logger("DTO").debug( - "Overlay `{}' was not loaded, not removing.".format(overlay_name) - ) - |