grthtrhthjhtyjytjytkergtrhtrjytjerhrfh4:24 29/09/2026a ,-Þiã@s¦ddlZddlZddlZddlZddlZddlmZdd„Zdd„Z dd „Z d d „Z e  ¡Z ejdfd d „ZGdd„deƒZddd„ZdZdd„ZGdd„deƒZdS)éNé)ÚlibcCs¤g}t|dƒ�‚}| ¡}| d¡D]^}| d¡}|dkrH| t|ƒ¡q"t|d|…ƒ}t||dd…ƒ}| t||dƒ¡q"Wdƒn1s–0Y|S)NÚrú,ú-éÿÿÿÿr)ÚopenÚreadÚsplitÚfindÚappendÚintÚextendÚrange)ÚpathZcpusÚfZcpus_range_strZ cpu_rangeZrangeopÚstartÚend©rú-/usr/lib/python3.9/site-packages/bcc/utils.pyÚ_read_cpu_ranges  4rcCstdƒS)Nz/sys/devices/system/cpu/online©rrrrrÚget_online_cpus$srcCstdƒS)Nz /sys/devices/system/cpu/possiblerrrrrÚget_possible_cpus'srcCs.t |¡}t |tj¡j ¡}||vr*|SdS©N)rZbcc_procutils_languageÚctÚcastZc_char_pÚvalueÚdecode)Z candidatesÚpidÚresÚlanguagerrrÚdetect_language*s r"cCs8t|dƒr|jn|}| |¡|r,| d¡| ¡dS)zA printb(s) print a bytes object to stdout and flush Úbufferó N)Úhasattrr#ÚwriteÚflush)ÚsÚfileÚnlÚbufrrrÚprintb1s   r,c@s(eZdZdZdd„Zdd„Zdd„ZdS) Ú 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). cCs&tjddkr||_n | t¡|_dS)Nré)ÚsysÚ version_infor(rÚFILESYSTEMENCODING)ÚselfÚargrrrÚ__init__FszArgString.__init__cCs |j t¡Sr)r(Úencoder1©r2rrrÚ __bytes__LszArgString.__bytes__cCs|jSr)r(r6rrrÚ__str__OszArgString.__str__N)Ú__name__Ú __module__Ú __qualname__Ú__doc__r4r7r8rrrrr->sr-c CsDt|dƒr|ntj}tjt d¡|d�| t |||||¡¡dS)Nr&é)rr)) r%r/ÚstderrÚ tracebackÚ print_stackÚ _getframer&ÚwarningsÚ formatwarning)ÚmessageÚcategoryÚfilenameÚlinenor)ÚlineÚlogrrrÚwarn_with_tracebackRsrJFcCsX|dur |Str*t|ƒtusTJd|ƒ‚n*t|ƒturTt d|td¡t|ƒ ¡S|S)Nznot a bytes object: %rr=)Ú _strict_bytesÚtypeÚbytesrBÚwarnÚDeprecationWarningr-r7)r3rrrÚ_assert_is_bytes[s  rPc@s$eZdZedd„ƒZedd„ƒZdS)Ú StrcmpRewritecCs"d|}|d|||f7}||fS)Nzstreq_%da~ static inline bool %s(char const *ignored, uintptr_t str) { char needle[] = %s; char haystack[sizeof(needle)]; %s(&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ÚfnamerrrÚ_generate_streq_functionfs  ô z&StrcmpRewrite._generate_streq_functionc Cs†|r d}nd}t ||¡}|D]V}| d¡} d} |sF| d¡ ¡|vrJd} t | | ||¡\} }|d7}| d| d¡}q|||dœ} | S) NzSTRCMP\("([^"]+)\",(.+?)\)zSTRCMP\(("[^"]+\"),(.+?)\)rZbpf_probe_readr=Zbpf_probe_read_userZSTRCMP)ÚexprrTrU)ÚreÚfinditerÚgroupÚstriprQrWÚreplace) rXZbin_cmpZis_userZprobe_user_listrTrUZ STRCMP_REÚmatchesÚmatchrRrSrVZrdictrrrÚ rewrite_exprys,  ÿþýzStrcmpRewrite.rewrite_exprN)r9r:r;Ú staticmethodrWr`rrrrrQes rQ)NN)Zctypesrr/r?rBrYZlibbccrrrrr"Úgetfilesystemencodingr1Ústdoutr,Úobjectr-rJrKrPrQrrrrÚs