3 ddlmZddljZddlZejjZGdddej Z dS))baseNcseZdZdZfddZfddZddZdd Zd d Zd d Z ddZ ddZ ddZ ddZ ddZddZddZddZZS)Pluginz: Base class for plugins with device hotpluging support. cstt|j||dS)N)superr__init__)selfargskwargs) __class__/usr/lib/python3.6/hotplug.pyr szPlugin.__init__cstt|j|jdS)N)rrcleanup_hardware_events_cleanup)r)r r r r szPlugin.cleanupcCsdS)Nr )rr r r _hardware_events_initszPlugin._hardware_events_initcCsdS)Nr )rr r r rszPlugin._hardware_events_cleanupcCs |jdS)N)r)rr r r _init_devicesszPlugin._init_devicescCsN|dkr&tjd|j|j|jn$|dkrJtjd|j|j|jdS)Naddzdevice '%s' addedremovezdevice '%s' removed)loginfoZsys_name _add_device_remove_device)rZeventZdevicer r r _hardware_events_callbacks z Plugin._hardware_events_callbackcCsdtjd|j|f|jj||j||jd|g|j|||j||jd|g|j j|dS)Nz!instance %s: adding new device %sZapply) rrname_assigned_devicesr_call_device_script script_pre_added_device_apply_tuning script_postprocessed_devices)rinstance device_namer r r _add_device_process$s   zPlugin._add_device_processcCsr||j|jBkrdSxXt|jjD],\}}t|j||gdkr$|j||Pq$Wtj d||jj |dS)Nrzno instance wants %s) r _free_deviceslist _instancesitemslenZ_get_matching_devicesr!rdebugr)rr Z instance_namerr r r r,s zPlugin._add_devicecCs8x|D]}|j||qWt|jt|jdk|_dS)zN Add devices specified by the set to the instance, no check is performed. rN)r!r&rassigned_devicesactive)rr device_namesdevr r r _add_devices_nocheck8s zPlugin._add_devices_nocheckcCsx||jkrt|j||jd|g|j|||j||jd|g|jj|t|jt|jdk|_|j j|dSdS)NZunapplyrTF) rrr_removed_device_unapply_tuningrrr&r(r)r)rrr r r r _remove_device_processCs    zPlugin._remove_device_processcCsJ||j|jBkrdSx0t|jjD]}|j||r$Pq$W|jj|dS)zVRemove device from the instance Parameters: device_name -- name of the device N)rr"r#r$valuesr.r)rr rr r r rQs  zPlugin._remove_devicecCsx|D]}|j||qWdS)zS Remove devices specified by the set from the instance, no check is performed. N)r.)rrr*r+r r r _remove_devices_nocheckas zPlugin._remove_devices_nocheckcCs6|j||g|jr2|jjtjtjr2|j||dS)N)Z_execute_all_device_commandshas_dynamic_tuning _global_cfggetconstsCFG_DYNAMIC_TUNINGCFG_DEF_DYNAMIC_TUNINGZ_instance_apply_dynamic)rrr r r r rhsz!Plugin._added_device_apply_tuningcCs:|jr$|jjtjtjr$|j|||j||gdddS)NT)r)r1r2r3r4r5r6Z_instance_unapply_dynamicZ_cleanup_all_device_commands)rrr r r r r-ms z%Plugin._removed_device_unapply_tuning)__name__ __module__ __qualname____doc__rr rrrrr!rr,r.rr0rr- __classcell__r r )r r rs    r) rZ tuned.constsr4Z tuned.logsZtunedZlogsr3rrr r r r s