3 YÜídIã@s>ddlmZddljZddlZejjƒZGdd„dej ƒZ dS)é)ÚbaseéNcsŒeZdZdZ‡fdd„Z‡fdd„Zdd„Zdd „Zd d „Zd d „Z dd„Z dd„Z dd„Z dd„Z dd„Zdd„Zdd„Zdd„Z‡ZS)ÚPluginz: Base class for plugins with device hotpluging support. cstt|ƒj||ŽdS)N)ÚsuperrÚ__init__)ÚselfÚargsÚkwargs)Ú __class__©ú/usr/lib/python3.6/hotplug.pyr szPlugin.__init__cstt|ƒjƒ|jƒdS)N)rrÚcleanupÚ_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 |jƒdS)N)r)rr r r Ú _init_devicesszPlugin._init_devicescCsN|dkr&tjd|jƒ|j|jƒn$|dkrJtjd|jƒ|j|jƒdS)NÚaddzdevice '%s' addedÚremovezdevice '%s' removed)ÚlogÚinfoZsys_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) rrÚnameÚ_assigned_devicesrÚ_call_device_scriptÚ script_preÚ_added_device_apply_tuningÚ script_postÚprocessed_devices)rÚinstanceÚ device_namer r r Ú_add_device_process$s   zPlugin._add_device_processcCsr||j|jBkrdSxXt|jjƒƒD],\}}t|j||gƒƒdkr$|j||ƒPq$Wtj d|ƒ|jj |ƒdS)Nrzno instance wants %s) rÚ _free_devicesÚlistÚ _instancesÚitemsÚlenZ_get_matching_devicesr!rÚdebugr)rr Z instance_namerr r r r,s zPlugin._add_devicecCs8x|D]}|j||ƒqWt|jƒt|jƒdk|_dS)zN Add devices specified by the set to the instance, no check is performed. rN)r!r&rÚassigned_devicesÚactive)rrÚ device_namesÚdevr r r Ú_add_devices_nocheck8s zPlugin._add_devices_nocheckcCsx||jkrt|j||jd|gƒ|j||ƒ|j||jd|gƒ|jj|ƒt|jƒt|jƒdk|_|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|jjƒƒD]}|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|jjtjtjƒr2|j||ƒdS)N)Z_execute_all_device_commandsÚhas_dynamic_tuningÚ _global_cfgÚgetÚconstsÚCFG_DYNAMIC_TUNINGÚCFG_DEF_DYNAMIC_TUNINGZ_instance_apply_dynamic)rrr r r r rhsz!Plugin._added_device_apply_tuningcCs6|jr$|jjtjtjƒr$|j||ƒ|j||gƒdS)N)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