o
    _w                     @   s  d dl Z d dlZdZdd Zdd Zdd Zd	d
 Zejd eed Z	d Z
e	D ]Ze
de> B Z
q*eejdk sEeeejd d krYejde jejd    ed ejd Ze dZeD ])Zejd dkrye
dee> B Z
qgejd dksejd d
kre
dee>  @ Z
qgejd d
kree
 ee
Zeed dZee e  dd e eD Zzed W n	 ey   Y nw zed W n	 ey   Y nw d ZeD ]wZee d Z ee Z	d Z
e	D ]Z!e
de!> B Z
qeD ]$Z!ejd dkre
dee!> B Z
qejd dkre
dee!>  @ Z
qee
Zzee dZee e  W q e"yW Z# zejdeeee#f  dZW Y dZ#[#qdZ#[#ww ee dS )    Nz
/proc/irq/c                 C   st   |   d}g }d}tt|d ddD ]"}t|| d}|dkr7|d@ r+|| |dL }|d7 }|dks"q|S )N,r         )stripsplitrangelenintappend)linefieldsbitmasklistentryimask r    /usr/lib/tuned/defirqaffinity.pyr   
   s   
r   c                 C   sh   g }d}| r%d}| d@ }|d| 7 }|r|d7 }d}| dL } | | | sd}t|D ]}||7 }q+|S )Nr    l    z%xr   r       )r   reversed)r   groupscomma
cpumaskstrmstringr   r   r   r   get_cpumask   s    
	
r   c                 C   sf   t  dkrd S zt| d}| }W d    n1 sw   Y  t|W S  ty2   dg Y S w )Nr   r)osgetuidopenreadliner   IOError)fnamefr   r   r   r   parse_def_affinity(   s   


r%   c                 C   s  d}t d }t|}|D ]}|d|> B }q||  @ r*tjd||| f  td dd tt D }z|d W n	 t	yD   Y nw z|d W n	 t	yU   Y nw |D ].}d}t | d	 }t|}|D ]}|d|> B }qh||  @ rtjd||| f  td qXtd d S )
Nr   default_smp_affinityr   z@verify: failed: irqaffinity (%s) inplacemask=%x shouldbemask=%x
c                 S   &   g | ]}t jt jt|r|qS r   r   pathisdirjoinirqpath.0r$   r   r   r   
<listcomp>=      & zverify.<locals>.<listcomp>20/smp_affinity)
r,   r%   sysstderrwriteexitr   listdirremove
ValueError)shouldbemaskinplacemaskr#   cpulistr   interruptdirsr   r   r   verify2   s<   



r?   z]defirqaffinity.py is deprecated. Use isolated_cores or other built-in functionality instead.
r&   r         z%s: invalid arguments
r   addr9   wc                 C   r'   r   r(   r-   r   r   r   r/   u   r0   r/   r1   r2   r3   z*Failed to set smp_affinity for IRQ %s: %s
)$r   r4   r,   r   r   r%   r?   r5   r6   r=   r   r   r	   argvstrr)   basenamer7   r   r   r   r   r
   r   r    focloser8   r>   r9   r:   retr#   jr"   er   r   r   r   <module>   s   
#$




