o
    4ŠØfà.  ã                   @   s2  g d ¢Z ddlZddlZddlZddlZddlZddlmZ z
ej 	e 
¡ ¡ZW n ey3   dZY nw dd„ Zdd„ Zdd	„ Zd
d„ ZG dd„ deƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZdaeƒ ae d¡aeƒ a[i Zeej  ¡ ƒD ]\Z!Z"e!dd… dkr“de!vr“de!› ee" < q{eƒ Z#dS ))ÚBaseProcessÚcurrent_processÚactive_childrenÚparent_processé    N)ÚWeakSetc                   C   ó   	 t S ©N)Ú_current_process© r
   r
   úi/home/ych/rk3568/buildroot/output/rockchip_rk3568_recovery/host/lib/python3.10/multiprocessing/process.pyr   %   ó   r   c                   C   s   	 t ƒ  ttƒS r   )Ú_cleanupÚlistÚ	_childrenr
   r
   r
   r   r   +   s   r   c                   C   r   r   )Ú_parent_processr
   r
   r
   r   r   3   r   r   c                  C   s*   t tƒD ]} | j ¡ d urt | ¡ qd S r   )r   r   Ú_popenÚpollÚdiscard)Úpr
   r
   r   r   =   s
   
€þr   c                   @   sú   e Zd Z	 dd„ Zddddi fddœdd„Zdd	„ Zd
d„ Zdd„ Zdd„ Zdd„ Z	d+dd„Z
dd„ Zdd„ Zedd„ ƒZejdd„ ƒZedd„ ƒZejdd„ ƒZedd„ ƒZejd d„ ƒZed!d"„ ƒZed#d$„ ƒZeZed%d&„ ƒZd'd(„ Zd+d)d*„ZdS ),r   c                 C   s   t ‚r   )ÚNotImplementedError©Úselfr
   r
   r   Ú_PopenM   ó   zBaseProcess._PopenNr
   )Údaemonc                C   s    t tƒ}tj|f | _tj ¡ | _t ¡ | _tj	| _
d | _d| _|| _t|ƒ| _t|ƒ| _|p@t| ƒjd d dd„ | jD ƒ¡ | _|d urI|| _t | ¡ d S )NFú-ú:c                 s   s    | ]}t |ƒV  qd S r   )Ústr)Ú.0Úir
   r
   r   Ú	<genexpr>^   s   € z'BaseProcess.__init__.<locals>.<genexpr>)ÚnextÚ_process_counterr	   Ú	_identityÚ_configÚcopyÚosÚgetpidÚ_parent_pidÚnameÚ_parent_namer   Ú_closedÚ_targetÚtupleÚ_argsÚdictÚ_kwargsÚtypeÚ__name__ÚjoinÚ_namer   Ú	_danglingÚadd)r   ÚgroupÚtargetr)   ÚargsÚkwargsr   Úcountr
   r
   r   Ú__init__P   s    


ÿzBaseProcess.__init__c                 C   s   | j rtdƒ‚d S )Nzprocess object is closed)r+   Ú
ValueErrorr   r
   r
   r   Ú_check_closedc   s   ÿzBaseProcess._check_closedc                 C   s$   	 | j r| j | ji | j¤Ž d S d S r   )r,   r.   r0   r   r
   r
   r   Úrung   s   ÿzBaseProcess.runc                 C   s@   	 |   ¡  tƒ  |  | ¡| _| jj| _| `| `| `t	 
| ¡ d S r   )r>   r   r   r   ÚsentinelÚ	_sentinelr,   r.   r0   r   r6   r   r
   r
   r   Ústartn   s   
zBaseProcess.startc                 C   ó   	 |   ¡  | j ¡  d S r   )r>   r   Ú	terminater   r
   r
   r   rD   €   ó   zBaseProcess.terminatec                 C   rC   r   )r>   r   Úkillr   r
   r
   r   rF   ‡   rE   zBaseProcess.killc                 C   s0   	 |   ¡  | j |¡}|d urt | ¡ d S d S r   )r>   r   Úwaitr   r   )r   ÚtimeoutÚresr
   r
   r   r3   Ž   s   ÿzBaseProcess.joinc                 C   sH   	 |   ¡  | tu rdS | jd u rdS | j ¡ }|d u rdS t | ¡ dS )NTF)r>   r	   r   r   r   r   )r   Ú
returncoder
   r
   r   Úis_alive™   s   


zBaseProcess.is_alivec                 C   sJ   	 | j d ur | j  ¡ d u rtdƒ‚| j  ¡  d | _ | `t | ¡ d| _d S )Nz^Cannot close a process while it is still running. You should first call join() or terminate().T)r   r   r=   ÚcloserA   r   r   r+   r   r
   r
   r   rL   ¬   s   



zBaseProcess.closec                 C   ó   | j S r   ©r4   r   r
   r
   r   r)   ½   ó   zBaseProcess.namec                 C   s
   || _ d S r   rN   )r   r)   r
   r
   r   r)   Á   s   
c                 C   s   	 | j  dd¡S )Nr   F)r$   Úgetr   r
   r
   r   r   Æ   s   zBaseProcess.daemonc                 C   s   	 || j d< d S )Nr   ©r$   )r   Údaemonicr
   r
   r   r   Í   s   c                 C   s
   | j d S ©NÚauthkeyrQ   r   r
   r
   r   rT   Õ   s   
zBaseProcess.authkeyc                 C   s   	 t |ƒ| jd< d S rS   )ÚAuthenticationStringr$   )r   rT   r
   r
   r   rT   Ù   s   c                 C   s$   	 |   ¡  | jd u r| jS | j ¡ S r   )r>   r   r   r   r
   r
   r   Úexitcodeà   s
   

zBaseProcess.exitcodec                 C   s(   	 |   ¡  | tu rt ¡ S | jo| jjS r   )r>   r	   r&   r'   r   Úpidr   r
   r
   r   Úidentê   s
   zBaseProcess.identc                 C   s,   	 |   ¡  z| jW S  ty   tdƒd ‚w )Nzprocess not started)r>   rA   ÚAttributeErrorr=   r   r
   r
   r   r@   ÷   s   
ÿzBaseProcess.sentinelc                 C   sè   d }| t u r	d}n&| jrd}n | jt ¡ krd}n| jd u r!d}n| j ¡ }|d ur-d}nd}t| ƒjd| j	 g}| jd urG| 
d| jj ¡ | 
d| j ¡ | 
|¡ |d uret ||¡}| 
d	| ¡ | jrm| 
d
¡ dd |¡ S )NÚstartedÚclosedÚunknownÚinitialÚstoppedzname=%rzpid=%sz	parent=%szexitcode=%sr   z<%s>ú )r	   r+   r(   r&   r'   r   r   r1   r2   r4   ÚappendrW   Ú_exitcode_to_namerP   r   r3   )r   rV   ÚstatusÚinfor
   r
   r   Ú__repr__  s0   




zBaseProcess.__repr__c              
   C   sÖ  ddl m}m} zÒzT| jd ur| | j¡ t d¡atƒ a	| 
¡  t}| at| j| j|ƒatjr6t ¡  ¡  z|j ¡  | ¡  W ~n~w | d¡ z|  ¡  d}W | ¡  n| ¡  w W nY tyŽ } z%|jd u rmd}nt|jtƒrw|j}ntj  t!|jƒd ¡ d}W Y d }~n?d }~w   d}dd l"}tj  d| j# ¡ | $¡  Y W t %¡  | d| ¡ | &¡  |S W t %¡  | d| ¡ | &¡  |S W t %¡  | d| ¡ | &¡  |S t %¡  | d| ¡ | &¡  w )Né   )ÚutilÚcontextz child process calling self.run()r   Ú
zProcess %s:
z process exiting with exitcode %d)'Ú rf   rg   Ú_start_methodÚ_force_start_methodÚ	itertoolsr;   r"   Úsetr   Ú_close_stdinr	   Ú_ParentProcessr*   r(   r   Ú	threadingÚ_HAVE_THREAD_NATIVE_IDÚmain_threadÚ_set_native_idÚ_finalizer_registryÚclearÚ_run_after_forkersrc   r?   Ú_exit_functionÚ
SystemExitÚcodeÚ
isinstanceÚintÚsysÚstderrÚwriter   Ú	tracebackr)   Ú	print_excÚ	_shutdownÚ_flush_std_streams)r   Úparent_sentinelrf   rg   Úold_processrV   Úer   r
   r
   r   Ú
_bootstrap"  sj   


ÿ



€í€üü
zBaseProcess._bootstrapr   )r2   Ú
__module__Ú__qualname__r   r<   r>   r?   rB   rD   rF   r3   rK   rL   Úpropertyr)   Úsetterr   rT   rV   rX   rW   r@   rd   r†   r
   r
   r
   r   r   G   sF    ÿ







	


r   c                   @   s   e Zd Zdd„ ZdS )rU   c                 C   s,   ddl m} |ƒ d u rtdƒ‚tt| ƒffS )Nre   )Úget_spawning_popenzJPickling an AuthenticationString object is disallowed for security reasons)rg   r‹   Ú	TypeErrorrU   Úbytes)r   r‹   r
   r
   r   Ú
__reduce__X  s   
ÿzAuthenticationString.__reduce__N)r2   r‡   rˆ   rŽ   r
   r
   r
   r   rU   W  s    rU   c                   @   s6   e Zd Zdd„ Zdd„ Zedd„ ƒZd
dd	„ZeZdS )ro   c                 C   s4   d| _ || _|| _d | _d | _d| _|| _i | _d S )Nr
   F)r#   r4   Ú_pidr(   r   r+   rA   r$   )r   r)   rW   r@   r
   r
   r   r<   h  s   
z_ParentProcess.__init__c                 C   s   ddl m} || jgdd S ©Nr   )rG   )rH   ©Úmultiprocessing.connectionrG   rA   )r   rG   r
   r
   r   rK   r  s   z_ParentProcess.is_alivec                 C   rM   r   )r   r   r
   r
   r   rX   v  rO   z_ParentProcess.identNc                 C   s"   	 ddl m} || jg|d d S r   r‘   )r   rH   rG   r
   r
   r   r3   z  s   z_ParentProcess.joinr   )	r2   r‡   rˆ   r<   rK   r‰   rX   r3   rW   r
   r
   r
   r   ro   f  s    


ro   c                   @   s   e Zd Zdd„ Zdd„ ZdS )Ú_MainProcessc                 C   s8   d| _ d| _d | _d | _d| _tt d¡ƒddœ| _d S )Nr
   ÚMainProcessFé    z/mp)rT   Ú	semprefix)	r#   r4   r(   r   r+   rU   r&   Úurandomr$   r   r
   r
   r   r<   ‰  s   ÿz_MainProcess.__init__c                 C   s   d S r   r
   r   r
   r
   r   rL   ›  r   z_MainProcess.closeN)r2   r‡   rˆ   r<   rL   r
   r
   r
   r   r“   ‡  s    r“   re   é   ZSIGÚ_r   )$Ú__all__r&   r|   Úsignalrl   rp   Ú_weakrefsetr   ÚpathÚabspathÚgetcwdÚORIGINAL_DIRÚOSErrorr   r   r   r   Úobjectr   r   rU   ro   r“   r   r	   r;   r"   rm   r   ra   r   Ú__dict__Úitemsr)   Úsignumr5   r
   r
   r
   r   Ú<module>   sB   	ÿ

  !
€
