a qéqeÿã@sfddlZddlmZmZmZddlmZddlmZm Z ddl m Z ddl m Z Gdd „d ee ƒZdS) éN)ÚIterableÚOptionalÚTupleé)Ú MatchContext)ÚIomemconÚ IomemconRange)Ú PolicyQuery)Ú match_rangecs²eZdZUdZdZeeed<dZe ed<dZ e ed<dZ e ed<dZ e ed<e eed œd d „ƒZejeeeefdd œd d „ƒZdd œ‡fdd„ Zeed œdd„Z‡ZS)Ú IomemconQuerya÷ Iomemcon context query. Parameter: policy The policy to query. Keyword Parameters/Class attributes: addr A 2-tuple of the memory addr range to match. (Set both to the same value for a single mem addr) addr_subset If true, the criteria will match if it is a subset of the iomemcon's range. addr_overlap If true, the criteria will match if it overlaps any of the iomemcon's range. addr_superset If true, the criteria will match if it is a superset of the iomemcon's range. addr_proper If true, use proper superset/subset operations. No effect if not using set operations. user The criteria to match the context's user. user_regex If true, regular expression matching will be used on the user. role The criteria to match the context's role. role_regex If true, regular expression matching will be used on the role. type_ The criteria to match the context's type. type_regex If true, regular expression matching will be used on the type. range_ The criteria to match the context's range. range_subset If true, the criteria will match if it is a subset of the context's range. range_overlap If true, the criteria will match if it overlaps any of the context's range. range_superset If true, the criteria will match if it is a superset of the context's range. range_proper If true, use proper superset/subset operations. No effect if not using set operations. NÚ_addrFÚ addr_subsetÚ addr_overlapÚ addr_supersetÚ addr_proper)ÚreturncCs|jS©N)r )Úself©rú;/usr/lib64/python3.9/site-packages/setools/iomemconquery.pyÚaddr?szIomemconQuery.addr)ÚvaluercCsZ|rPt|Ž}|jdks |jdkr.td |¡ƒ‚|j|jkrHtd |¡ƒ‚||_nd|_dS)Nrz1Memory address must be positive: {0.low}-{0.high}zIThe low mem addr must be smaller than the high mem addr: {0.low}-{0.high})rZlowZhighÚ ValueErrorÚformatr )rrZ pending_addrrrrrCsÿ ÿÿc s(tt|ƒj|fi|¤Žt t¡|_dSr)Úsuperr Ú__init__ÚloggingZ getLoggerÚ__name__Úlog)rÚpolicyÚkwargs©Ú __class__rrrUszIomemconQuery.__init__ccs~|j d |¡¡|j d |¡¡| |j¡|j ¡D]>}|jrdt|j|j|j |j |j |j ƒsdq:|  |j¡srq:|Vq:dS)z.Generator which yields all matching iomemcons.z"Generating results from {0.policy}z}Address: {0.addr!r}, overlap: {0.addr_overlap}, subset: {0.addr_subset}, superset: {0.addr_superset}, proper: {0.addr_proper}N)rÚinforÚdebugZ_match_context_debugrZ iomemconsrr r rrrZ_match_contextÚcontext)rZiomemconrrrÚresultsYs$ þ ú zIomemconQuery.results)rÚ __module__Ú __qualname__Ú__doc__r rrÚ__annotations__r ÚboolrrrÚpropertyrÚsetterrÚintrrrr&Ú __classcell__rrr!rr s )    r )rÚtypingrrrZmixinsrZ policyreprrÚqueryr Úutilr r rrrrÚs