
    f                          d dl Zd dlZddlmZ  G d dej
                        Z G d dej
                        Z G d d	ej
                        Z G d
 dej
                        Z	 G d de
      Zy)    N   )get_online_cpusc                   D    e Zd Zdej                  fdej                  fgZy)_sample_period_unionsample_periodsample_freqN__name__
__module____qualname__ctc_ulong_fields_     */usr/lib/python3/dist-packages/bcc/perf.pyr   r      s!     "**-

+
r   r   c                   D    e Zd Zdej                  fdej                  fgZy)_wakeup_events_unionwakeup_eventswakeup_watermarkN)r
   r   r   r   c_uintr   r   r   r   r   r      s!     ")),#RYY/
r   r   c                   x    e Zd Zdej                  fdej                  fdej                  fdej                  fgZy)_bp_addr_unionbp_addrkprobe_funcuprobe_pathconfig1Nr	   r   r   r   r   r      s9    BJJ'

+

+BJJ'	
r   r   c                   x    e Zd Zdej                  fdej                  fdej                  fdej                  fgZy)_bp_len_unionbp_lenkprobe_addrprobe_offsetconfig2Nr	   r   r   r   r   r   '   s9    2::&

+,BJJ'	
r   r   c                       e Zd Z G d dej                        ZdZdZdZdZ	dZ
dZd	Zd
ZdZ ej                  dd      Zej"                  Zej$                  Zed        Zede	dfd       Zy)Perfc                       e Zd Zg dZg dej
                  fdej
                  fdej                  fdefdej                  fdej                  fdej
                  d	fd
ej
                  d	fdej
                  d	fdej
                  d	fdej
                  d	fdej
                  d	fdej
                  d	fdej
                  d	fdej
                  d	fdej
                  d	fdej
                  d	fdej
                  d	fdej
                  d	fdej
                  d	fdej
                  d	fdej
                  dfdej
                  d	fdej
                  d	fdej
                  d	fdej
                  d	fdej
                  d	fdej
                  d	fd ej
                  d	fd!ej
                  d	fd"ej
                  d	fd#ej
                  d	fd$ej
                  d	fd%ej
                  d	fd&ej
                  d	fd'ej
                  d	fd(ej
                  d	fd)ej
                  d	fd*ej
                  d	fd+ej
                  d,fd-efd.ej
                  fd/e	fd0e
fd1ej                  fd2ej                  fd3ej
                  fd4ej                  fd5ej                  fd6ej
                  fd7ej                  fd8ej                  fd9ej
                  fd:ej
                  fZd; Z fd<Z xZS )=Perf.perf_event_attr)r   r   r   r   typesizeconfigr   sample_typeread_formatdisabledr   inheritpinned	exclusiveexclude_userexclude_kernel
exclude_hvexclude_idlemmapcommfreqinherit_statenable_on_exectask	watermark
precise_ip   	mmap_datasample_id_allexclude_hostexclude_guestexclude_callchain_kernelexclude_callchain_usermmap2	comm_execuse_clockidcontext_switchwrite_backward
namespacesksymbol	bpf_event
aux_outputcgroup	text_poke__reserved_1   r   bp_typer   r   branch_sample_typesample_regs_usersample_stack_userclockidsample_regs_intraux_watermarksample_max_stack__reserved_2aux_sample_size__reserved_3c                 X   d| _         | j                  D cg c]  }|d   	 c}| _        | j                  j                  t        j                  D cg c]  }|d   	 c}       | j                  j                  t
        j                  D cg c]  }|d   	 c}       | j                  j                  t        j                  D cg c]  }|d   	 c}       | j                  j                  t        j                  D cg c]  }|d   	 c}       y c c}w c c}w c c}w c c}w c c}w )Nx   r   )r)   r   ctype_fieldsextendr   r   r   r   )selfitems     r   __init__zPerf.perf_event_attr.__init__r   s     #DI=A]](KTa(KD%%%,,BVB_B_-`$d1g-`a%%,,BVB_B_-`$d1g-`a%%,,.BYBY-Z$d1g-Z[%%,,-BXBX-Y$d1g-YZ	 )L-`-`-Z-Ys   DDDD"?D'c                     t        | d      r)|| j                  vrt        dj                  ||             t        t
        j                  |   ||       y )Nr^   zoWarning: Setting field {} on perf_event_attr that isn't part of the ctype - {} won't make it to perf_event_open)hasattrr^   printformatsuperr%   perf_event_attr__setattr__)r`   keyvalue	__class__s      r   ri   z Perf.perf_event_attr.__setattr__z   s`    t^4DDUDU9U  P  W  W  X[  ]`  a  b$..A#uMr   )r
   r   r   _anonymous_r   r   r   r   r   r   r   c_intc_uint16r   rb   ri   __classcell__)rl   s   @r   rh   r'   1   s   7+7+7 "2::.7 01EF	7
 '

37 '

37 $RYY27 #BIIq17 "299a07 %bii37 (A67 *299a87 &ryy!47 (A67  A.7   A.!7"  A.#7$ (A6%7& *299a8'7(  A.)7* %bii3+7, &ryy!4-7. %bii3/70 )"))Q7172 (A6374 )"))Q7576 4RYYB778 2299a@97: !"))Q/;7< %bii3=7> '		15?7@ *299a8A7B *299a8C7D &ryy!4E7F #BIIq1G7H %bii3I7J &ryy!4K7L "299a0M7N %bii3O7P (B7Q7R 01EFS7T #BII.U7V *>:W7X )-8Y7Z .rzz:[7\ ,RZZ8]7^ -bii8_7` #BHH-a7b ,RZZ8c7d )"))4e7f ,R[[9g7h (5i7j +BII6k7l (3m7r[N Nr   rh   i*  r   r   r=      i      i$@i $  z	libc.so.6T)	use_errnoc                    t         j                  t         j                  t        j                  |      |j
                  | dt         j                        }|dk  r3t        j                         }t        |t        j                  |            |j                  t         j                  k(  r[t         j                  |t         j                  d      dk  r3t        j                         }t        |t        j                  |            t         j                  |t         j                  d      dk  r3t        j                         }t        |t        j                  |            y )Nr   zcommon_pid == -17)r%   syscallNR_PERF_EVENT_OPENr   byrefpidPERF_FLAG_FD_CLOEXEC	get_errnoOSErrorosstrerrorr(   PERF_TYPE_TRACEPOINTioctlPERF_EVENT_IOC_SET_FILTERPERF_EVENT_IOC_ENABLE)cpuattrpfderrno_s       r   _open_for_cpuzPerf._open_for_cpu   s    ll4#:#:BHHTN#'88S"#'#<#<> 7!#%fbkk&.ABB99 9 99zz#t'E'E"579:;%'\\^F")&"++f2E"FF ::c4#=#=qAAE!#%fbkk&.ABB Fr   ru   c                    t         j                         }| |_        ||_        ||_        t         j
                  |_        |dkD  rd|_        ||_        nd|_        d|_	        t               D ]  }t         j                  ||        y )Nr   r   i )r%   rh   r*   ry   r(   PERF_SAMPLE_RAWr+   r7   r   r   r   r   )	tpoint_idry   ptyper7   r   r   s         r   perf_event_openzPerf.perf_event_open   s}     ++-'!	#'#7#7 !8 !DI)-D&)*D&%,"*, 6C**356r   N)r
   r   r   r   	Structurerh   rw   PERF_TYPE_HARDWAREPERF_TYPE_SOFTWAREr   PERF_TYPE_HW_CACHEr   rz   r   r   CDLLlibcrv   r   staticmethodr   r   r   r   r   r%   r%   /   s    L	Nbll L	N^ !     !$.! $ rww{d3,,

		C 
	C( 
+-5I!"	6 
	6r   r%   )ctypesr   r}   utilsr   Unionr   r   r   r   objectr%   r   r   r   <module>r      s^     	 "
288 

288 

RXX 

BHH 
Q66 Q6r   