+
     Gic(  c                   s    ^ RI Ht ^ RIt^ RIt^ RIt^ RIt^ RIt^ RIHt ^ RIH	t	 ^ RIH
t
 ^ RIt^ RIt^ RIt^ RIHt  ! R R]P                   P"                  4      tRR	 ltR
 tRsR tR tRR ltR tR tR tR# )i    )whichN)helpers)services)actions)GLibc            	       s  a  ] tR t^t o R t]P                  P                  ]P                  P                  RRRRRR7      R 4       4       t]P                  P                  ]P                  P                  RR	RR
7      R 4       4       t]P                  P                  ]P                  P                  RRRR
7      R 4       4       t]P                  P                  ]P                  P                  RRRR
7      R 4       4       t]P                  P                  ]P                  P                  RRRR
7      R 4       4       tRtV tR# )DbusContainerManagerc                sr    W@n         Wn        \        P                  P                  P                  WV4       R # N)argslooperdbusserviceObject__init__)selfr   ZbusZobject_pathr   s   &&&&&4/usr/lib/waydroid/tools/actions/container_manager.pyr   ZDbusContainerManager.__init__   s&    	$$T<    zid.waydro.ContainerManagerza{ss}Z senderconn)in_signatureout_signatureZsender_keywordZconnection_keywordc                sr   \         P                  ! VP                  R RR4      R 4      pVP                  V4      p\	        V4      RVR,          39  d   \        R4      hVP                  V4      p\	        V4      R8w  d#   \	        V4      VR,          8w  d   \        R4      h\        V P                  V4       R# )	zorg.freedesktop.DBusz/org/freedesktop/DBus/BusFZ0Zuser_idz0Cannot start a session on behalf of another userpidzInvalid session pidN)	r	   Z	InterfaceZ
get_objectZGetConnectionUnixUserZstrRuntimeErrorZGetConnectionUnixProcessIDdo_startr   )r   sessionr   r   Z	dbus_infoZuidr   s   &&&&   r   StartZDbusContainerManager.Start   s     NN4??3IKfhm#n  qG  H	--f5s8C!344QRR226:s8s?s3x75>9455G$r   Zb)r   r   c                s2    \        V P                  V4       R # r   )stopr   )r   quit_sessions   &&r   StopZDbusContainerManager.Stop#   s     	TYY%r   c                    \         P                  P                  V P                  4      '       g   \	        R 4      h\        V P                  4       R# Waydroid is not initializedN)r   initializeris_initializedr   r   freezer      &r   FreezeZDbusContainerManager.Freeze(   s7     ""11$))<<<==tyyr   c                r   r   )r   r   r    r   r   unfreezer"   r#   r   UnfreezeZDbusContainerManager.Unfreeze/   s7     ""11$))<<<==r   c                s&   \         P                  P                  V P                  4      '       g   \	        R 4      h V P                  P
                  p\        P                  P                  V P                  4      VR&   V#   \         d    / u # i ; i)r   Zstate)
r   r   r    r   r   r   r   lxcstatusZAttributeError)r   r      & r   
GetSessionZDbusContainerManager.GetSession6   su     ""11$))<<<==	ii''G&{{11$))<GGN 	I	s   AB   BB)r   r   N)Z__name__Z
__module__Z__qualname__Z__firstlineno__r   r   loggingZlog_exceptionsr	   r
   Zmethodr   r   r$   r&   r*   Z__static_attributes__Z__classdictcell__)Z__classdict__s   @r   r   r      sR    =
 __##	\\5G[]nv  LR  S% S $% __##	\\5CWYZ& [ $& __##	\\5BVXY Z $
 __##	\\5BVXY Z $
 __##	\\5BV]^ _ $r   r   c                 sv  a  V 3R  lpV'       g   . ROpVP                  \        P                  ! R4      4       VP                  \        P                  ! R4      4       VP                  \        P                  ! R4      4       VP                  \        P                  ! R4      4       V F  pV! WB4       K  	  R# )c                 s   < \         P                  P                  V 4      '       d5   R VRV .p\        P                  P
                  P                  SVRR7       R# R# )chmodz-RFcheckN)ospathexiststoolsr   runuser)r0   modecommandr   s   && r   r,   Zset_permissions.<locals>.chmodC   sH    77>>$dD1GMM""4">  r   z/dev/dri/renderD*z/dev/fb*z/dev/video*z/dev/dma_heap/*N)
z/dev/ashmemz/dev/sw_syncz/sys/kernel/debug/sync/sw_syncz/dev/Vcodecz/dev/MTK_SMIz/dev/mdp_syncz/dev/mtk_cmdqz/dev/graphicsz/dev/pvr_syncz/dev/ion)Zextendglob)r   Z	perm_listr5   r,   r0   s   f&&  r   set_permissionsr8   B   s    ? 
	( 	#678:./=12#456d r   c                 sN  a a \         P                  ! 4       oV V3R  lp\         P                  ! \         P                  \        P
                  VR4       \         P                  ! \         P                  \        P                  VR4       \        P                  P                  S\        P                  ! 4       RS 4      p\        S\        P                  ! 4       RS 4      p \        P                  P                  R\        P                  ! 4       RR7      pSP'                  4        TP(                  e7   TP(                  P+                  4        TP(                  P-                  4        R# R#   \        P                  P                    d    \"        P$                  ! R4        R# i ; i)c                 sN   <  \        S4       SP                  4        R #     L; ir   )r   Zquit)datar   mainloops   &r   sigint_handlerZstart.<locals>.sigint_handlerl   s$    	J 		s     $Nz/Initializerz/ContainerManagerzid.waydro.ContainerT)Zdo_not_queuez$Container service is already running)r   ZMainLoopZunix_signal_addZPRIORITY_HIGHsignalZSIGINTZSIGTERMr   r   ZDbusInitializerr	   Z	SystemBusr   r
   ZBusNameZ
exceptionsZNameExistsExceptionr+   errorr3   Zworker_threadkillZjoin)r   r;   r   Zcontainer_managerZnamer:   s   f    @r   startr?   i   s$   }}H 	++V]]NDQ++V^^^TR%%55h@PR`bfgK,Xt~~7GI\^bc||##$94>>;KZ^#_
 LLN  ,!!&&(!!&&( - ??.. <=s    5E+ +5F$#F$Fc                 s   \         '       d   R # \        P                  P                  V 4      pVR,          R,          R8X  dZ   \        P
                  P                  V 4      ^ 8w  d   \        P                  ! R4       \        P
                  P                  V 4       \        P
                  P                  V 4       \        V RV P                  ,           RV P                  ,           RV P                  ,           .R4       Rs R # )NwaydroidZvendor_typeZMAINLINEzFailed to load Binder driver/dev/Z666T)prepared_driversr2   configloadr   ZdriversZprobeBinderDriverr+   r=   ZprobeAshmemDriverZloadBinderNodesr8   ZBINDER_DRIVERZVNDBINDER_DRIVERHWBINDER_DRIVER)r   cfgr)   r   prepare_drivers_oncerG      s     ,,

D
!C
:}%3??,,T2a7MM89))$/OO##D)D$$$$$'''$&&& 	
 r   c                 s	   \         P                  P                  V 4      '       g   \        R 4      hRV 9   d   \        R4      h\	        V 4       \
        P                  ! R4       \        P                  P                  R,           R.p\        P                  P                  P                  W4       \        R4      '       d@   \        P                  P                  P                  V RRV P                  ,           .RR	7       \        R4      '       d0   RR
.p\        P                  P                  P                  WRR7       \        P                   P#                  R4      '       d    \        P$                  ! R4       \        P$                  ! R4       \        P                   P'                  R4      '       d   \        P(                  ! R4       \        P                   P'                  R4      '       d   \        P(                  ! R4       \        R4      '       d1   RR.p\        P                  P                  P                  WRR7       Ms\        R4      '       dc   \        P                  P                  P                  V . RORR7      ^ 8X  d0   . ROp\        P                  P                  P                  WRR7       \+        V 4       \        P,                  P/                  W4       \1        \        P                  P2                  R,          R,           4      ;_uu_ 4       pRVP5                  4       9  dG   \        P6                  P9                  WR,          \        P                  P2                  R,          4       RRR4       \        P                  P;                  V 4      p\        P<                  P?                  WR,          R,          V4       \        P@                  PC                  V 4       \        P,                  PE                  V 4       \F        PH                  PE                  V 4       Wn%        R#    . ROp\        P                  P                  P                  YRR7        EL; i  \        P                   P'                  R4      '       d   \        P(                  ! R4       \        P                   P'                  R4      '       d   \        P(                  ! R4       i i ; i  + '       g   i     ELv; i)r   r   zAlready tracking a sessionz'Starting up container for a new session/data/scripts/waydroid-net.shr?   waydroid-sensordrA   Z
background)Zoutputzcgroup-liteFr-   /sys/fs/cgroup/schedtunez/sys/fs/cgroup/schedtune/probe0z&/sys/fs/cgroup/schedtune/probe0/probe1r   nfcd	systemctlr'   z/waydroid/configZconfig_sessionZwaydroid_datar9   Nr@   Zimages_path)Zumountz-lrJ   )rL   z	is-active-qrK   )rL   r   rK   )&r   r   r    r   rG   r+   infor2   rC   	tools_srcr   r3   r4   r    rE   r/   r0   ZismountZmkdirr1   Zrmdirr8   r'   Zgenerate_session_lxc_configZopendefaultsZreadmountZbindrD   imagesZmount_rootfsZprotocolZset_aidl_versionr?   r   hardware_managerr   )r   r   r6   ZfrF      &&   r   r   r      sl   --d33899D788LL:; ||%%./079G	MM4)   %w1E1E'EF| 	 	] W~~M*tE: 
ww122
	<HH67HH=>
 ww~~FGGABww~~?@@:; V}}6"tE:	{		!2!2!7!7>fns!7!txy!y/tE: D KK++D:	ell##E*-??	@	@A1668+MMt_%=$||44V<> 
A ,,

D
!CNN*om&DgN%%d+KKd##D)LK	?BGMM""4">ww~~FGGABww~~?@@:; A" 
A	@	@s,   &,P5 AS(51Q)&Q, ,A S%S%(S9	c                 sv   \         P                  P                  V 4      '       g   \        R 4      h\        P
                  ! R4        \        P                  P                  V 4       \        P                  P                  V 4      pVR8w  dF   \        P                  P                  V 4       \        P                  P                  V 4      R8w  d   K&  \        P                  P                  R,           R.p\        P                  P                  P!                  WRR7       \#        R4      '       d1   RR.p\        P                  P                  P!                  WRR7       Ms\#        R	4      '       dc   \        P                  P                  P!                  V . RORR7      ^ 8X  d0   . ROp\        P                  P                  P!                  WRR7       \#        R
4      '       dw   RR
.p\        P                  P                  P!                  WRRR7      P%                  4       pV'       d1   RRV.p\        P                  P                  P!                  WRR7       \        P&                  P)                  V 4        \        P*                  P-                  V \        P                  P.                  R,          4       RT 9   dc   T'       dW   \        P
                  ! R4        \0        P2                  ! \5        T P6                  R,          4      \8        P:                  4       T =R# R#     Lo; i    L; i    R# ; i)r   zStopping containerZSTOPPEDrH   r   Fr-   r?   rK   rL   rI   ZpidofT)r.   Zoutput_returnr>   z-9r9   r   z5Terminating session because the container was stoppedr   N)rL   z
is-enabledrM   rK   )rL   r?   rK   )r   r   r    r   r+   rN   r   rS   r   r   r'   r(   r2   rC   rO   r3   r4   r    ZstriprR   Zumount_rootfsrQ   Z
umount_allrP   r/   r>   Zintr   r<   ZSIGUSR1)r   r   r(   r6   r   rT   r   r   r      si   --d33899LL%&/!!&&t,##D)YKKT"++$$T*i7 <<))234:<tE: >>'GMM""4">;U]]%6%6%;%;DBksx%;%y}~%~4GMM""4"> #$$ 23G--##((eSW(X^^`C!4-!!&&tE&B 	$$T*	MM$$T5<<+@+@+HI TUGGCU 34fnnE  	sC   H2L3 ;?L% :L3 	L3  ?L, L3 %L)'L3 ,L0.L3 3L8c                 s   \         P                  P                  V 4      pVR 8X  dA   \         P                  P                  V 4       \         P                  P	                  V 4       R# \
        P                  ! RP                  V4      4       R# ZRUNNINGzWayDroid container is {}N)r   r'   r(   r   r?   r+   r=   formatr   r(   r)   r   restartrX     sZ    [[%F$077?@r   c                 s*   \         P                  P                  V 4      pVR 8X  dH   \         P                  P                  V 4       \         P                  P                  V 4      R 8X  d   K&  R# \        P
                  ! RP                  V4      4       R# rU   )r   r'   r(   r!   r+   r=   rV   rW   r)   r   r!   r!     si    [[%F4 kk  &)3 4 	077?@r   c                 s    \         P                  P                  V 4      pVR 8X  dH   \         P                  P                  V 4       \         P                  P                  V 4      R 8X  d   K&  R# R# )ZFROZENN)r   r'   r(   r%   rW   r)   r   r%   r%   '  sT    [[%FT"kk  &(2 3 r   )NZ777)T)Zshutilr    r+   r/   r7   r<   Ztools.configr2   r   r   r   r	   Zdbus.serviceZdbus.exceptionsZgi.repositoryr   r
   r   r   r8   r?   rB   rG   r   r   rX   r!   r%   ) r   r   <module>rY      s{      	          /4<<.. /b%N)8  &DL5nAAr   