fddlZddlZddlZddlZddlZddlmZdZdZ dZ dZ ejZ ejdfdZGd d eZdd Zd Zd ZGddeZy)N)libc xg}t|d5}|j}|jdD]p}|jd}|dk(r|j t |4t |d|}t ||dzd}|j t||dzr ddd|S#1swY|SxYw)Nr,-r)openreadsplitfindappendintextendrange)pathcpusfcpus_range_str cpu_rangerangeopstartends +/usr/lib/python3/dist-packages/bcc/utils.py_read_cpu_rangers D dC 1A'--c2 1InnS)G"} C N+Ihw/0)GAIJ/0 E%Q/0 1 1 K 1 Ks BB//B9ctdS)Nz/sys/devices/system/cpu/onlinerrget_online_cpusr $s ; <>rctj|}tj|tjj j }||vr|SdSN)rbcc_procutils_languagectcastc_char_pvaluedecode) candidatespidreslanguages rdetect_languager/*sG $ $S )CwwsBKK(..557H:-8747rct|dr |jn|}|j||r|jd|jy)zA printb(s) print a bytes object to stdout and flush buffer N)hasattrr1writeflush)sfilenlbufs rprintbr:1s; !x0$++dCIIaL  %JJLrc"eZdZdZdZdZdZy) 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). cttjddk\r||_y|jt|_y)Nr)sys version_infor6r*FILESYSTEMENCODING)selfargs r__init__zArgString.__init__Fs-   A ! #DFZZ 23DFrc@|jjtSr$)r6encoderArBs r __bytes__zArgString.__bytes__Lsvv}}/00rc|jSr$)r6rGs r__str__zArgString.__str__Os vv rN)__name__ __module__ __qualname____doc__rDrHrJrrrr<r<>s4 1rr<c t|dr|ntj}tjtj d||j tj|||||y)Nr4)rr7) r3r?stderr traceback print_stack _getframer4warnings formatwarning)messagecategoryfilenamelinenor7linelogs rwarn_with_tracebackr]RsN$($cjjC CMM!,37IIh$$Wh&$OPrFc||Strt|tus Jd|z|St|tur7tjd|zt dt |jS|S)Nznot a bytes object: %rrP) _strict_bytestypebytesrUwarnDeprecationWarningr<rH)rCs r_assert_is_bytesrd[sp { CyE!A#;c#AA! J c%  .46H!L~'')) Jrc,eZdZedZedZy) StrcmpRewritec2d|z}|d|d|d|dz }||fS)Nzstreq_%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)stringprobe_read_funcstreq_functionsprobeidfnames r_generate_streq_functionz&StrcmpRewrite._generate_streq_functionfs3W$fo / /o%%rc0|rd}nd}tj||}|D]m}|jd} d} |s!|jdj|vrd} tj | | ||\} }|dz }|j d| d}o|||d} | S) NzSTRCMP\("([^"]+)\",(.+?)\)zSTRCMP\(("[^"]+\"),(.+?)\)rbpf_probe_readrPbpf_probe_read_userSTRCMP)exprrjrk)refinditergroupstriprfrmreplace) rrbin_cmpis_userprobe_user_listrjrk STRCMP_REmatchesmatchrhrirlrdicts r rewrite_exprzStrcmpRewrite.rewrite_exprys 8I7I++i. 4E[[^F.O A$$&/9&;O%2%K%K,2O,;W&F "E? qLG<<%3D 4.   rN)rKrLrM staticmethodrmrrrrrfrfes(&&$rrf)NN)ctypesr&r?rRrUrslibbccrrr r"r/getfilesystemencodingrAstdoutr:objectr<r]r_rdrfrrrrsx   =?8 /S..0::! (Q .F.r