509318396
Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­
<!DOCTYPE html>
<html>
3
í«„^À  ã               @   sN   d dl Z ddlmZ ddlmZ ddlmZ ddlmZ G dd„ deeƒZ	dS )	é    Né   )ÚMatchContext)ÚIomemconRange)ÚPolicyQuery)Úmatch_rangec                   sV   e Zd ZdZdZdZdZdZdZe	dd„ ƒZ
e
jdd„ ƒZ
‡ fdd„Zd	d
„ Z‡  ZS )Ú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.
    NFc             C   s   | j S )N)Ú_addr)Úself© r
   ú%/usr/lib64/python3.6/iomemconquery.pyÚaddrL   s    zIomemconQuery.addrc             C   s^   t |Ž }t|ƒrT|jdk s$|jdk r2tdj|ƒƒ‚|j|jkrLtdj|ƒƒ‚|| _nd | _d S )Nr   z1Memory address must be positive: {0.low}-{0.high}zIThe low mem addr must be smaller than the high mem addr: {0.low}-{0.high})r   ÚallZlowZhighÚ
ValueErrorÚformatr   )r	   ÚvalueZpending_addrr
   r
   r   r   P   s    c                s$   t t| ƒj|f|Ž tjtƒ| _d S )N)Úsuperr   Ú__init__ÚloggingZ	getLoggerÚ__name__Úlog)r	   ÚpolicyÚkwargs)Ú	__class__r
   r   r   b   s    zIomemconQuery.__init__c             c   s„   | j jdj| ƒƒ | j jdj| ƒƒ | j| j ƒ xN| jjƒ D ]@}| jrht|j| j| j	| j
| j| jƒ rhq<| j|jƒsvq<|V  q<W dS )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_debugr   Z	iomemconsr   r   Úaddr_subsetÚaddr_overlapÚaddr_supersetÚaddr_properZ_match_contextÚcontext)r	   Ziomemconr
   r
   r   Úresultsf   s     

zIomemconQuery.results)r   Ú
__module__Ú__qualname__Ú__doc__r   r   r   r   r   Úpropertyr   Úsetterr   r    Ú__classcell__r
   r
   )r   r   r      s   )r   )
r   Zmixinsr   Z	policyrepr   Zqueryr   Úutilr   r   r
   r
   r
   r   Ú<module>   s
   