+
    Ðé·i#$  ã                   ó°   € ^ RI Ht ^ RIt^ RIt^RIHtHtHtH	t	H
t
Ht  ! R R]4      t ! R R]4      t ! R R	]4      t ! R
 R]4      t ! R R]4      tR# )é    )Úprint_functionN)ÚlibÚ_USDT_CBÚ_USDT_PROBE_CBÚbcc_usdt_locationÚbcc_usdt_argumentÚBCC_USDT_ARGUMENT_FLAGSc                   ó   € ] tR t^tRtR# )ÚUSDTException© N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__static_attributes__r   ó    Ú*/usr/lib/python3/dist-packages/bcc/usdt.pyr   r      s   † Ûr   r   c                   ó8   a € ] tR t^t o R tR tR tR tRtV t	R# )ÚUSDTProbeArgumentc                ó  € VP                   ^ 8  V n        \        VP                   4      V n         VP                  V n        V P                  \        P
                  ,          ^ 8w  d   VP                  V n        V P                  \        P                  ,          ^ 8w  d   VP                  V n        V P                  \        P                  ,          ^ 8w  d   VP                  V n
        V P                  \        P                  ,          ^ 8w  d   VP                  V n        V P                  \        P                  ,          ^ 8w  d   VP                  V n        V P                  \        P                  ,          ^ 8w  d   VP                   V n        R# R# )r   N)ÚsizeÚsignedÚabsÚvalidr	   ÚCONSTANTÚconstantÚDEREF_OFFSETÚderef_offsetÚDEREF_IDENTÚderef_identÚBASE_REGISTER_NAMEÚbase_register_nameÚINDEX_REGISTER_NAMEÚindex_register_nameÚSCALEÚscale)ÚselfÚarguments   &&r   Ú__init__ÚUSDTProbeArgument.__init__   s  € Ø—m‘m aÑ'ˆŒÜ˜Ÿ™Ó&ˆŒ	Ø—^‘^ˆŒ
Ø�:‰:Ô/×8Ñ8Õ8¸AÔ=Ø$×-Ñ-ˆDŒMØ�:‰:Ô/×<Ñ<Õ<ÀÔAØ (× 5Ñ 5ˆDÔØ�:‰:Ô/×;Ñ;Õ;¸qÔ@Ø'×3Ñ3ˆDÔØ�:‰:Ô/×BÑBÕBÀaÔGØ&.×&AÑ&AˆDÔ#Ø�:‰:Ô/×CÑCÕCÀqÔHØ'/×'CÑ'CˆDÔ$Ø�:‰:Ô/×5Ñ5Õ5¸Ô:Ø!Ÿ™ˆDŽJñ ;r   c                ób   € R V P                   V P                  '       d
   R3,          # R3,          # )z%d %s byteszsigned  Úunsigned)r   r   ©r'   s   &r   Ú_size_prefixÚUSDTProbeArgument._size_prefix+   s7   € ØØ—‘¨$¯+¯+¨+˜JÐFõGð 	GØ;EÐFõGð 	Gr   c                ó  € V P                   \        P                  ,          ^ 8w  d   RV P                  ,          # V P                   \        P                  ,          ^ 8X  d"   RV P
                  P                  4       ,          # V P                   \        P                  ,          ^ 8w  dþ   V P                   \        P                  ,          ^ 8X  dØ   V P                   \        P                  ,          ^ 8w  dc   RV P                  P                  4       ,          pV P                   \        P                  ,          ^ 8w  d   VRV P                  ,          ,          pMRpV P                  ^ 8¼  d   RMRpRV P
                  P                  4       V\        V P                  4      V3,          # V P                   \        P                  ,          ^ 8w  dª   V P                   \        P                  ,          ^ 8w  d„   V P                   \        P                  ,          ^ 8w  d^   V P
                  R	8X  dM   V P                  ^ 8¼  d   RMRpR
V P                  P                  4       V\        V P                  4      3,          # RV P                   ,          # )r   z%dz%sz + %sz * %dÚ Ú+Ú-z*(%s %s %d%s)Úipz*(&%s %s %d)z&unrecognized argument format, flags %d)r   r	   r   r   r   r"   Údecoder   r#   r$   r%   r&   r   r   r!   r    )r'   Úindex_offsetÚsigns   &  r   Ú_formatÚUSDTProbeArgument._format/   sì  € ð �:‰:Ô/×8Ñ8Õ8¸AÔ=Ø˜$Ÿ-™-Õ'Ð'Ø�:‰:Ô/×<Ñ<Õ<ÀÔAØ˜$×1Ñ1×8Ñ8Ó:Õ:Ð:Ø�:‰:Ô/×<Ñ<Õ<ÀÔAØ�:‰:Ô/×;Ñ;Õ;¸qÔ@Ø�z‰zÔ3×GÑGÕGÈ1ÔLØ&¨×)AÑ)A×)HÑ)HÓ)JÕJ�Ø—:‘:Ô 7× =Ñ =Õ=ÀÔBØ  G¨d¯j©jÕ$8Õ8�Løà!�Ø×+Ñ+¨qÔ0‘3°cˆDØ" d×&=Ñ&=×&DÑ&DÓ&FØ&*¬C°×0AÑ0AÓ,BÀLð&Rõ Rð Rà�:‰:Ô/×<Ñ<Õ<ÀÔAØ�:‰:Ô/×;Ñ;Õ;¸qÔ@Ø�:‰:Ô/×BÑBÕBÀaÔGØ×"Ñ" dÔ*Ø×+Ñ+¨qÔ0‘3°cˆDØ! T×%5Ñ%5×%<Ñ%<Ó%>Ø%)¬3¨t×/@Ñ/@Ó+Að%Cõ Cð Cð
 8¸$¿*¹*ÕDÐDr   c                óL   € V P                  4       : R V P                  4       : 2# )z @ )r.   r8   r-   s   &r   Ú__str__ÚUSDTProbeArgument.__str__M   s   € Ø ×-Ñ-Ö/°·±µÐ@Ð@r   )	r"   r   r    r   r$   r&   r   r   r   N)
r   r   r   r   r)   r.   r8   r;   r   Ú__classdictcell__©Ú__classdict__s   @r   r   r      s"   ø‡ € ò(ò"GòE÷<Að Ar   r   c                   ó2   a € ] tR t^Pt o R tR tR tRtV tR# )ÚUSDTProbeLocationc                ó„   € Wn         W n        VP                  V n        VP                  V n        VP                  V n        R # ©N)ÚprobeÚindexÚnum_argumentsÚaddressÚbin_path)r'   rD   rE   Úlocations   &&&&r   r)   ÚUSDTProbeLocation.__init__Q   s4   € ØŒ
ØŒ
Ø"×0Ñ0ˆÔØ×'Ñ'ˆŒØ ×)Ñ)ˆŽr   c                ó\   € R V P                   P                  4       V P                  3,          # )z%s 0x%x)rH   r5   rG   r-   s   &r   r;   ÚUSDTProbeLocation.__str__X   s#   € Ø˜DŸM™M×0Ñ0Ó2°D·L±LÐAÕAÐAr   c           
     ó^  € \        4       p\        P                  ! V P                  P                  V P                  P
                  V P                  P                  V P                  V\        P                  ! V4      4      pV^ 8w  d   \        RWP                  3,          4      h\        V4      # )r   z.error retrieving probe argument %d location %d)r   r   Úbcc_usdt_get_argumentrD   ÚcontextÚproviderÚnamerE   ÚctÚbyrefr   r   )r'   rE   ÚargÚress   &&  r   Úget_argumentÚUSDTProbeLocation.get_argument[   s†   € ÜÓ!ˆÜ×'Ò'¨¯
©
×(:Ñ(:¸D¿J¹J×<OÑ<OØ(,¯
©
¯©Ø(,¯
©
°E¼2¿8º8ÀC»=óJˆð �!Œ8ÜØDØŸJ™JÐ'õ(ó)ð )ô ! Ó%Ð%r   )rG   rH   rE   rF   rD   N)	r   r   r   r   r)   r;   rV   r   r=   r>   s   @r   rA   rA   P   s   ø‡ € ò*òB÷	&ð 	&r   rA   c                   ó8   a € ] tR t^ft o R tR tR tR tRtV t	R# )Ú	USDTProbec                óÞ   € Wn         VP                  V n        VP                  V n        VP                  V n        VP                  V n        VP
                  V n        VP                  V n        R # rC   )rO   rP   rQ   rH   Ú	semaphoreÚnum_locationsrF   )r'   rO   rD   s   &&&r   r)   ÚUSDTProbe.__init__g   sO   € ØŒØŸ™ˆŒØ—J‘JˆŒ	ØŸ™ˆŒØŸ™ˆŒØ"×0Ñ0ˆÔØ"×0Ñ0ˆÖr   c                óŽ   € R V P                   P                  4       V P                  P                  4       V P                  3,          # )z%s:%s [sema 0x%x])rP   r5   rQ   r[   r-   s   &r   r;   ÚUSDTProbe.__str__p   s9   € Ø"Ø—‘×$Ñ$Ó&¨¯	©	×(8Ñ(8Ó(:¸D¿N¹NÐKõLð 	Lr   c                ót   € V P                   P                  4       : R V P                  P                  4       : 2# )Ú:)rP   r5   rQ   r-   s   &r   Ú
short_nameÚUSDTProbe.short_namet   s'   € ØŸ-™-×.Ñ.Ö0°$·)±)×2BÑ2BÕ2DÐEÐEr   c           	     óø   € \        4       p\        P                  ! V P                  V P                  V P
                  V\        P                  ! V4      4      pV^ 8w  d   \        RV,          4      h\        WV4      # )r   z"error retrieving probe location %d)
r   r   Úbcc_usdt_get_locationrO   rP   rQ   rR   rS   r   rA   )r'   rE   ÚlocrU   s   &&  r   Úget_locationÚUSDTProbe.get_locationw   s^   € ÜÓ!ˆÜ×'Ò'¨¯©°d·m±mÀTÇYÁYØ(-¬r¯xªx¸«}ó>ˆà�!Œ8ÜÐ DÀuÕ LÓMÐMÜ  ¨cÓ2Ð2r   )rH   rO   rQ   rF   r\   rP   r[   N)
r   r   r   r   r)   r;   rb   rg   r   r=   r>   s   @r   rY   rY   f   s    ø‡ € ò1òLòF÷3ð 3r   rY   c                   ó`   a € ] tR t^t o RR ltR tR tR tR tR t	R t
R	 tR
 tR tRtV tR# )ÚUSDTNc                ó  € V'       d–   VR8w  d�   Wn         V'       d,   \        P                  ! WP                  R4      4      V n        M0\        P                  ! V\
        P                  ! ^ 4      4      V n        V P                  R8X  d   \        RV,          4      hR# V'       dV   W n        \        P                  ! VP                  R4      4      V n        V P                  R8X  d   \        RV,          4      hR# \        R4      h)é   ÚasciiNz USDT failed to instrument PID %dz!USDT failed to instrument path %sz/either a pid or a binary path must be specifiedéÿÿÿÿ)
Úpidr   Úbcc_usdt_new_frompidÚencoderO   rR   Úc_char_pr   ÚpathÚbcc_usdt_new_frompath)r'   ro   rs   s   &&&r   r)   ÚUSDT.__init__€   sÅ   € ß�3˜"”9ØŒHßÜ"×7Ò7¸¿[¹[ÈÓ=QÓR�•ä"×7Ò7¸¼R¿[º[È»^ÓL�”Ø�|‰|˜tÔ#Ü#Ð$FÈÕ$LÓMÐMñ $çØŒIÜ×4Ò4°T·[±[ÀÓ5IÓJˆDŒLØ�|‰|˜tÔ#Ü#Ð$GÈ$Õ$NÓOÐOñ $ô  ØEóGð Gr   c                óF   € \         P                  ! V P                  4       R # rC   )r   Úbcc_usdt_closerO   r-   s   &r   Ú__del__ÚUSDT.__del__’   s   € Ü×Ò˜4Ÿ<™<Ö(r   c                ó¦  € VP                  R ^4      p\        V4      ^8X  dB   \        P                  ! V P                  VP                  R4      VP                  R4      4      pMTVw  rV\        P                  ! V P                  VP                  R4      VP                  R4      VP                  R4      4      pV^ 8w  d   \        RV,          4      hR# )ra   rm   a.  Failed to enable USDT probe '%s':
the specified pid might not contain the given language's runtime,
or the runtime was not built with the required USDT probes. Look
for a configure flag similar to --with-dtrace or --enable-dtrace.
To check which probes are present in the process, use the tplist tool.
N)ÚsplitÚlenr   Úbcc_usdt_enable_proberO   rq   Ú%bcc_usdt_enable_fully_specified_prober   )r'   rD   Úfn_nameÚprobe_partsÚretÚprovider_nameÚ
probe_names   &&&    r   Úenable_probeÚUSDT.enable_probe•   s¾   € Ø—k‘k # qÓ)ˆÜˆ{Ó˜qÔ Ü×+Ò+Ø—‘˜eŸl™l¨7Ó3°W·^±^ÀGÓ5LóN‰Cð +6Ñ'ˆ]Ü×;Ò;Ø—‘˜m×2Ñ2°7Ó;¸Z×=NÑ=NÈwÓ=WØ—‘˜wÓ'ó)ˆCð �!Œ8Üðð
 õóð ñ r   c                ó¾   €  V P                  W4       R#   \         d=   p\        T\        P                  R 7       \        P
                  ! ^4        Rp?R# Rp?ii ; i))ÚfileN)r„   r   ÚprintÚsysÚstderrÚexit)r'   rD   r   Úes   &&& r   Úenable_probe_or_bailÚUSDT.enable_probe_or_bail©   s@   € ð	Ø×Ñ˜eÖ-øÜô 	Ü�!œ#Ÿ*™*Õ%Ü�HŠH�Q�KŠKûð	ús   ‚ •A 1AÁAc                ó   € V P                   # rC   )rO   r-   s   &r   Úget_contextÚUSDT.get_context°   s   € Ø�|‰|Ðr   c                óÊ   € \         P                  ^,          ! 4       p\         P                  ! V P                  4      V^ &   \        P                  ! V^4      P                  4       # )rl   )rR   Úc_void_prO   r   Úbcc_usdt_genargsr5   )r'   Ú	ctx_arrays   & r   Úget_textÚUSDT.get_text³   sD   € Ü—[‘[ 1–_Ó'ˆ	Ü—{’{ 4§<¡<Ó0ˆ	�!‰Ü×#Ò# I¨qÓ1×8Ñ8Ó:Ð:r   c                ój  € VP                  R ^4      p\        V4      ^8X  d@   \        P                  ! V P                  VP                  R4      V4      P                  4       # Vw  rE\        P                  ! V P                  VP                  R4      VP                  R4      V4      P                  4       # )ra   rm   )r{   r|   r   Úbcc_usdt_get_probe_argctyperO   rq   r5   Ú+bcc_usdt_get_fully_specified_probe_argctype)r'   rƒ   Ú	arg_indexr€   r‚   rD   s   &&&   r   Úget_probe_arg_ctypeÚUSDT.get_probe_arg_ctype¸   s�   € Ø ×&Ñ& s¨AÓ.ˆÜˆ{Ó˜qÔ Ü×2Ò2Ø—‘˜j×/Ñ/°Ó8¸)óEßEKÁVÃXðNð &1Ñ"ˆ]Ü×BÒBØ—‘˜m×2Ñ2°7Ó;¸U¿\¹\È'Ó=RÐT]ó_ß_eÑ_eÓ_gðhr   c                óp   a a€ . oVV 3R  lp\         P                  ! S P                  \        V4      4       S# )c                 óf   <€ SP                  \        SP                  V P                  4      4       R # rC   )ÚappendrY   rO   Úcontents)rD   Úprobesr'   s   &€€r   Ú
_add_probeÚ)USDT.enumerate_probes.<locals>._add_probeÄ   s   ø€ Ø�M‰Mœ) D§L¡L°%·.±.ÓAÖBr   )r   Úbcc_usdt_foreachrO   r   ©r'   r£   r¢   s   f @r   Úenumerate_probesÚUSDT.enumerate_probesÂ   s.   ù€ Øˆö	Cô 	×Ò˜TŸ\™\¬8°JÓ+?Ô@Øˆr   c                óx   € V P                  4       pV F#  w  rErgV'       d   RpVP                  WEWgR7       K%  	  R# )rl   )rQ   r   Úaddrro   Nrn   )Úenumerate_active_probesÚattach_uprobe)r'   ÚbpfÚattach_usdt_ignore_pidr¢   Úbinpathr   rª   ro   s   &&&     r   Úattach_uprobesÚUSDT.attach_uprobesÌ   s?   € Ø×-Ñ-Ó/ˆÛ-3Ñ)ˆW˜tß%Ø�Ø×Ñ 7Ø#'ð ö 2ó .4r   c                ól   a€ . oV3R  lp\         P                  ! V P                  \        V4      4       S# )c                 ó.   <€ SP                  WW#34       R # rC   )r    )r¯   r   rª   ro   r¢   s   &&&&€r   r£   Ú0USDT.enumerate_active_probes.<locals>._add_probeÖ   s   ø€ Ø�M‰M˜7¨TÐ7Ö8r   )r   Úbcc_usdt_foreach_uproberO   r   r¦   s   & @r   r«   ÚUSDT.enumerate_active_probesÔ   s-   ø€ Øˆõ	9ô 	×#Ò# D§L¡L´.ÀÓ2LÔMØˆr   )rO   rs   ro   )NN)r   r   r   r   r)   rx   r„   r�   r�   r–   rœ   r§   r°   r«   r   r=   r>   s   @r   rj   rj      s>   ø‡ € ôGò$)òò(òò;ò
hòò2÷ð r   rj   )Ú
__future__r   ÚctypesrR   r‰   Úlibbccr   r   r   r   r   r	   Ú	Exceptionr   Úobjectr   rA   rY   rj   r   r   r   Ú<module>r¼      s[   ðõ &Û Û 
÷,÷ ,ô	�Iô 	ô5A˜ô 5Aôn&˜ô &ô,3�ô 3ô2[ˆ6ö [r   