+
     Gih  c                   sz    ^ RI t ^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt. ROt. R	Ot	. R
Ot
R tR tR tR tR tR tR# )i    Nc                 s    \        R R4      ;_uu_ 4       pV F>  pVP                  4       p\        V4      ^8  g   K%  V^,          R8X  g   K5   RRR4       R# 	  RRR4       R#   + '       g   i     R# ; i)z/proc/filesystemsZrbinderNTF)openZsplitlen)argsZhandleZlineZwordss   &   */usr/lib/waydroid/tools/helpers/drivers.pyisBinderfsLoadedr       s^    	!3	'	'6DJJLE5zQ58x#7	 
(	' 
(  
(	' s   #A$A$A$A$$A5	c                 sx  a
aaaaaa ^p^p^p^ oSV,           oSV,           oSV,           o
^o^oV
VVV3R loVVV3R lpV! ^b^R4      p\        RR4      pV FL  p\        P                  ! R\        VR4      ^ ^ 4      p	 \        P
                  ! VP                  4       Wi4       KN  	  R#   \         d     K`  i ; i)	i   c                 sj   < V S,          VS,          ,          VS,          ,          VS,          ,          # N )Z	direction_typenrsizeDIRSHIFTNRSHIFT	SIZESHIFT	TYPESHIFTs   &&&&r   IOCZallocBinderNodes.<locals>.IOC4   s-    X%%9*<=wOSW[dSdee    c                 s&   < S! SS,          WV4      # r   r   )r   r	   r
   r   READWRITEs   &&&r   IOWRZallocBinderNodes.<locals>.IOWR7   s    4:u$//r   i  z/dev/binderfs/binder-controlZrbZ256sIIzutf-8N)r   structZpackZbytesfcntlZioctlZfilenoZFileExistsError)r   binder_dev_nodesZNRBITSZTYPEBITSZSIZEBITSr   ZBINDER_CTL_ADDZbinderctrlfdnodeZnode_structr   r   r   r   r   r   r   s   &&        @@@@@@@r   allocBinderNodesr   )   s    FHHG& IH$I8#HEDf f0 "a%N6t<L kkeD'*Aq2	KK++-~K	 !
  		s   ?%B**B98B9c                 s   . pR pR pR p\          F3  p\        P                  P                  RV,           4      '       g   K1  RpK5  	  V'       g   VP	                  \         ^ ,          4       \
         F3  p\        P                  P                  RV,           4      '       g   K1  RpK5  	  V'       g   VP	                  \
        ^ ,          4       \         F3  p\        P                  P                  RV,           4      '       g   K1  RpK5  	  V'       g   VP	                  \        ^ ,          4       \        V4      ^ 8  Ed   \        V 4      '       g   RP                  V4      pRRRP                  V4      .p\        P                  P                  P                  WR RR7      pV'       d;   \        P                   ! R4       \        P                   ! VP#                  4       4       \        V 4      '       d   . ROp\        P                  P                  P                  WR R	7       . ROp\        P                  P                  P                  WR R	7       \%        W4       R
R.pVP'                  \(        P(                  ! R4      4       VP	                  R4       \        P                  P                  P                  WR R	7       ^ # )F/dev/TZ,modprobeZbinder_linuxzdevices="{}")checkZoutput_returnzFailed to load binder driverr   Zlnz-sz/dev/binderfs/*)Zmkdirz-p/dev/binderfs)Zmountz-tr    r    r   )BINDER_DRIVERSospathexistsZappendVNDBINDER_DRIVERSHWBINDER_DRIVERSr   r   ZjoinZformattoolshelpersrunuserloggingZerrorZstripr   Zextendglob)	r   r   
has_binderhas_vndbinderhas_hwbinderr   ZdevicescommandZoutputs	   &        r   probeBinderDriverr.   E   s   JML77>>'D.))J  q 12!77>>'D.)) M "  1! 45 77>>'D.))L !  0 34
q %%hh/0G!>'..w79G]]&&++DVZ+[F<=flln-D!!6GMM""4">JGMM""4">T4TlGNN499%678NN7#MM""4">r   c                 s    \         P                  P                  R 4      '       g0   . ROp\        P                  P
                  P                  WRR7       \         P                  P                  R 4      '       g   R# ^ # )z/dev/ashmemFr   )r   z-qZashmem_linux)r   r    r!   r$   r%   r&   r'   )r   r-      & r   probeAshmemDriverr1   q   sR    77>>-((4tE:77>>-((	r   c                 sj   R pR pR pV P                   R8X  Ed   \        V 4       \         F9  p\        P                  P                  RV,           4      '       g   K1  RpW@n        K;  	  V'       g   \        R4      h\         F9  p\        P                  P                  RV,           4      '       g   K1  RpW@n	        K;  	  V'       g   \        R4      h\         F9  p\        P                  P                  RV,           4      '       g   K1  RpW@n        K;  	  V'       g   \        R4      hR# \        RR  F9  p\        P                  P                  RV,           4      '       g   K1  RpW@n        K;  	  V'       g   \        R4      h\        RR  F9  p\        P                  P                  RV,           4      '       g   K1  RpW@n	        K;  	  V'       g   \        R4      h\        RR  F9  p\        P                  P                  RV,           4      '       g   K1  RpW@n        K;  	  V'       g   \        R4      hR# )	FZMAINLINEr   Tz+Binder node "binder" for waydroid not foundz.Binder node "vndbinder" for waydroid not foundz-Binder node "hwbinder" for waydroid not foundNr/   )Zvendor_typer.   r   r   r    r!   BINDER_DRIVERZOSErrorr"   VNDBINDER_DRIVERr#   HWBINDER_DRIVER)r   r*   r+   r,   r   s   &    r   setupBinderNodesr5   {   s   JML:%$"Dww~~gn--!
%)" # GHH%Dww~~gn-- $(,% & JKK$Dww~~gn--#'+$ % IJJ  #3B'Dww~~gn--!
%)" ( GHH%cr*Dww~~gn-- $(,% + JKK$Sb)Dww~~gn--#'+$ * IJJ r   c                 s6   \         P                  P                  V 4      pVR ,          R,          V n        VR ,          R,          V n        VR ,          R,          V n        VR ,          P                  R4      V n        VR ,          P                  R4      V n        R# )Zwaydroidr    	vndbinderhwbinderZbinder_protocolZservice_manager_protocolN)	r$   ZconfigZloadr2   r3   r4   ZgetZBINDER_PROTOCOLZSERVICE_MANAGER_PROTOCOL)r   Zcfgr0   r   loadBinderNodesr8      sy    
,,

D
!CZ2D
OK8Dz?:6Dz?../@AD$'
O$7$78R$SD!r   )zanbox-binderZpuddlejumperZbonderr    )zanbox-vndbinderZvndpuddlejumperZ	vndbonderr6   )zanbox-hwbinderZhwpuddlejumperZhwbonderr7   )r(   r   r)   r   r   Ztools.configr$   Ztools.helpers.runr   r"   r#   r   r   r.   r1   r5   r8   r   r   r   <module>r9      sU     	       8*X.K`Tr   