Ë
    f  ã                   óÐ   — d dl Zd dlZd dlZd dlZd dlZddlmZ d„ Zd„ Z	d„ Z
d„ Z ej                  «       Zej                  dfd„Z G d	„ d
e«      Zdd„ZdZd„ Z G d„ de«      Zy)é    Né   )Úlibc           	      óx  — g }t        | d«      5 }|j                  «       }|j                  d«      D ]p  }|j                  d«      }|dk(  r|j	                  t        |«      «       Œ4t        |d | «      }t        ||dz   d  «      }|j                  t        ||dz   «      «       Œr 	 d d d «       |S # 1 sw Y   |S xY w)NÚrú,ú-éÿÿÿÿr   )ÚopenÚreadÚsplitÚfindÚappendÚintÚextendÚrange)ÚpathÚcpusÚfÚcpus_range_strÚ	cpu_rangeÚrangeopÚstartÚends           ú+/usr/lib/python3/dist-packages/bcc/utils.pyÚ_read_cpu_ranger      s·   € Ø€DÜ	ˆd�C‹ð 	1˜AØŸ™›ˆØ'×-Ñ-¨cÓ2ò 	1ˆIØ—n‘n SÓ)ˆGØ˜"Š}Ø—‘œC 	›NÕ+ä˜I h wÐ/Ó0�Ü˜) G¨A¡I JÐ/Ó0�Ø—‘œE %¨¨Q©Ó/Õ0ñ	1÷	1ð €K÷	1ð €Kús   �BB/Â/B9c                  ó   — t        d«      S )Nz/sys/devices/system/cpu/online©r   © ó    r   Úget_online_cpusr    $   s   € ÜÐ;Ó<Ð<r   c                  ó   — t        d«      S )Nz /sys/devices/system/cpu/possibler   r   r   r   Úget_possible_cpusr"   '   s   € ÜÐ=Ó>Ð>r   c                 ó´   — t        j                  |«      }t        j                  |t        j                  «      j
                  j                  «       }|| v r|S d S ©N)r   Úbcc_procutils_languageÚctÚcastÚc_char_pÚvalueÚdecode)Ú
candidatesÚpidÚresÚlanguages       r   Údetect_languager/   *   sG   € Ü
×
$Ñ
$ SÓ
)€CÜ�w‰w�sœBŸK™KÓ(×.Ñ.×5Ñ5Ó7€HØ :Ñ-ˆ8Ð7°4Ð7r   c                 ó    — t        |d«      r|j                  n|}|j                  | «       |r|j                  d«       |j                  «        y)zA
    printb(s)

    print a bytes object to stdout and flush
    Úbufferó   
N)Úhasattrr1   ÚwriteÚflush)ÚsÚfileÚnlÚbufs       r   Úprintbr:   1   s;   € ô !  xÔ0ˆ$�+Š+°d€Cà‡I�Iˆa„LÙ	Ø�	‰	�%ÔØ‡J�J…Lr   c                   ó"   — e Zd ZdZd„ Zd„ Zd„ Zy)Ú	ArgStringzÑ
    ArgString(arg)

    encapsulate a system argument that can be easily coerced to a bytes()
    object, which is better for comparing to kernel or probe data (which should
    never be en/decode()'ed).
    c                 ót   — t         j                  d   dk\  r|| _        y |j                  t        «      | _        y )Nr   é   )ÚsysÚversion_infor6   r*   ÚFILESYSTEMENCODING)ÚselfÚargs     r   Ú__init__zArgString.__init__F   s-   € Ü×Ñ˜AÑ !Ò#ØˆD�Fà—Z‘ZÔ 2Ó3ˆD�Fr   c                 ó@   — | j                   j                  t        «      S r$   )r6   ÚencoderA   ©rB   s    r   Ú	__bytes__zArgString.__bytes__L   s   € Ø�v‰v�}‰}Ô/Ó0Ð0r   c                 ó   — | j                   S r$   )r6   rG   s    r   Ú__str__zArgString.__str__O   s   € Ø�v‰vˆr   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__rD   rH   rJ   r   r   r   r<   r<   >   s   „ ñò4ò1ór   r<   c           	      óä   — t        |d«      r|nt        j                  }t        j                  t        j
                  d«      |¬«       |j                  t        j                  | ||||«      «       y )Nr4   é   )r   r7   )	r3   r?   ÚstderrÚ	tracebackÚprint_stackÚ	_getframer4   ÚwarningsÚformatwarning)ÚmessageÚcategoryÚfilenameÚlinenor7   ÚlineÚlogs          r   Úwarn_with_tracebackr]   R   sN   € Ü˜$ Ô(‰$¬c¯j©j€CÜ×ÑœCŸM™M¨!Ó,°3Õ7Ø‡I�IŒh×$Ñ$ W¨h¸À&È$ÓOÕPr   Fc                 óä   — | €| S t         rt        | «      t        u s
J d| z  «       ‚| S t        | «      t        ur7t        j                  d| z  t
        d«       t        | «      j                  «       S | S )Nznot a bytes object: %rrP   )Ú_strict_bytesÚtypeÚbytesrU   ÚwarnÚDeprecationWarningr<   rH   )rC   s    r   Ú_assert_is_bytesrd   [   sp   € Ø
€{Øˆ
ÝÜ�C‹yœEÑ!ÐAÐ#;¸cÑ#AÓAÐ!ð €Jô 
ˆc‹œ%Ñ	Ü�‰Ð.°Ñ4Ô6HÈ!ÔLÜ˜‹~×'Ñ'Ó)Ð)Ø€Jr   c                   ó,   — e Zd Zed„ «       Zed„ «       Zy)ÚStrcmpRewritec                 ó2   — d|z  }|d|›d| ›d|›d�z  }||fS )Nzstreq_%dz
static inline bool z?(char const *ignored, uintptr_t str) {
        char needle[] = z1;
        char haystack[sizeof(needle)];
        zô(&haystack, sizeof(haystack), (void *)str);
        for (int i = 0; i < sizeof(needle) - 1; ++i) {
                if (needle[i] != haystack[i]) {
                        return false;
                }
        }
        return true;
}
        r   )ÚstringÚprobe_read_funcÚstreq_functionsÚprobeidÚfnames        r   Ú_generate_streq_functionz&StrcmpRewrite._generate_streq_functionf   s3   € ð ˜WÑ$ˆÙò ’fšoð/ñ 	/ˆð �oÐ%Ð%r   c                 ó0  — |rd}nd}t        j                  || «      }|D ]m  }|j                  d«      }	d}
|s!|j                  d«      j                  «       |v rd}
t        j                  |	|
||«      \  }}|dz  }| j                  d|d«      } Œo | ||dœ}|S )	NzSTRCMP\("([^"]+)\",(.+?)\)zSTRCMP\(("[^"]+\"),(.+?)\)r   Úbpf_probe_readrP   Úbpf_probe_read_userÚSTRCMP)Úexprrj   rk   )ÚreÚfinditerÚgroupÚstriprf   rm   Úreplace)rr   Úbin_cmpÚis_userÚprobe_user_listrj   rk   Ú	STRCMP_REÚmatchesÚmatchrh   ri   rl   Úrdicts                r   Úrewrite_exprzStrcmpRewrite.rewrite_expry   s»   € ñ Ø8‰Ià7ˆIÜ—+‘+˜i¨Ó.ˆØò 	4ˆEØ—[‘[ “^ˆFØ.ˆOñ Ø—‘˜A“×$Ñ$Ó&¨/Ñ9Ø&;�OÜ%2×%KÑ%KØ,2°OØ,;¸Wó&FÑ"ˆE�?ð �q‰LˆGØ—<‘< ¨%°Ó3‰Dð	4ð Ø.Øñ
ˆð
 ˆr   N)rK   rL   rM   Ústaticmethodrm   r   r   r   r   rf   rf   e   s(   „ Øñ&ó ð&ð$ ñó ñr   rf   )NN)Úctypesr&   r?   rR   rU   rs   Úlibbccr   r   r    r"   r/   ÚgetfilesystemencodingrA   Ústdoutr:   Úobjectr<   r]   r_   rd   rf   r   r   r   ú<module>r†      sx   ðó Û 
Û Û Û 	å òò=ò?ò8ð
 /�S×.Ñ.Ó0Ð à—:‘: !ó ô�ô ó(Qð €òô.�Fõ .r   