g\(ddlZddlZddlZddlZddlZddlmZddlmZgdZe edZ ejejfZ ddiZejd k(rKddlZddlZe ed rej%d ej&iej%d ej(iGd deZGddeZeZej4Zej6Zej8Zej:ZdZy)N)spawn)util)ensure_runningregister unregisterpthread_sigmasknoopcyNr G/opt/alt/python312/lib64/python3.12/multiprocessing/resource_tracker.pyr!sDrposix sem_unlink semaphore shared_memoryc eZdZy)ReentrantCallErrorN)__name__ __module__ __qualname__r rrrr6srrcBeZdZdZdZdZdZdZdZdZ dZ d Z y ) ResourceTrackercRtj|_d|_d|_yr ) threadingRLock_lock_fd_pidselfs r__init__zResourceTracker.__init__<s__&  rctd)Nz8Reentrant call into the multiprocessing resource tracker)rr"s r_reentrant_call_errorz%ResourceTracker._reentrant_call_errorAs ! FH Hrcx|j5|jjdkDr|jcdddS|j dddyt j |jd|_t j |jdd|_dddy#1swYyxYw)Nrr)r_recursion_countr&r osclosewaitpidr!r"s r_stopzResourceTracker._stopIs ZZzz**,q0113 Z xxZ HHTXX DH JJtyy! $DIZZs-B0 B0A B00B9c:|j|jSr )rr r"s rgetfdzResourceTracker.getfdZs xxrcD|j5|jjdkDr|jcdddS|j|j r dddyt j |j |j t j|jdd|_d|_tjdg} |jtjjd}t j"\}} |j|t%j&}|gt)j*z}|d||zgz } t,r(t/j0t.j2t4t)j6|||}t,r)t/j0t.j8t4 ||_||_ t j | dddy#t$rYcwxYw#t $rY wxYw#t,r)t/j0t.j8t4wwxYw#t j |xYw#t j |wxYw#1swYyxYw)zMake sure that resource tracker process is running. This can be run from any process. Usually a child process will use the resource created by its parent.rNrzUresource_tracker: process died unexpectedly, relaunching. Some resources might leak.z:from multiprocessing.resource_tracker import main;main(%d)z-c)rr(r&r _check_aliver)r*r!r+ChildProcessErrorwarningswarnappendsysstderrfileno Exceptionpiperget_executabler_args_from_interpreter_flags _HAVE_SIGMASKsignalr SIG_BLOCK_IGNORED_SIGNALSspawnv_passfds SIG_UNBLOCK)r# fds_to_passcmdrwexeargspids rrzResourceTracker.ensure_running^s ZZzz**,q0113Zxx#$$&Z"yy, 499a0    IJK ""3::#4#4#67OC779DAq ""1%**,ut@@BBsQw'U$..v/?/?AQR--c4EC$..v/A/ACST   yZ$)  *%..v/A/ACST%    yZs-JJ*J ,H 6%J-H J#AI!+AH-0/I!I<.J HJHJ H*&J)H**J-1II!!I99I<<JJJcd tj|jdy#t$rYywxYw)z;Check that the pipe has not been closed by sending a probe.s PROBE:0:noop TF)r)writer OSErrorr"s rr0zResourceTracker._check_alives5  HHTXX0 1  s # //c*|jd||y)z0Register name of resource with resource tracker.REGISTERN_sendr#namertypes rrzResourceTracker.registers :tU+rc*|jd||y)z2Unregister name of resource with resource tracker. UNREGISTERNrNrPs rrzResourceTracker.unregisters <u-rc2 |jdj |||j d}t |dkDr tdtj|j|}y#t$rtjd|d|dYwxYw)NzSResourceTracker called reentrantly for resource cleanup, which is unsupported. The z object z might leak.z {0}:{1}:{2} asciiiz msg too long) rrr2r3formatencodelen ValueErrorr)rJr )r#rCrQrRmsgnbytess rrOzResourceTracker._sends <    !$$S$6==gF s8c>^, ,$((C(" < MMgXdX\; <  >j(e ((. ,e ++D1*+Ds+JKK!2#(++- E;MM#N#&{#3U";#<= $N&u-d3$#0?    >*! 7 %^>!%N D!&LMMN%#(++- E;MM#N#&{#3U";#<=!#N&u-d3$N D!&LMMND$#0s7H H4 J.IB#H *I-J.#I)8I8 HH I*$III IIIII&"J.) I54I58 J&J!J)!J&&J))J+.M #K,+M , K8 5M 7K8 8M LM L? L: 5M:L? ?MM M M )r)r=r5rr2rr__all__hasattrr<rarcr?rfrQ_multiprocessing _posixshmemupdater shm_unlinkrprobjectr_resource_trackerrrrr.r{r rrrs$  6 12 MM6>>2 L77g. )44  //   MfM`$%"11  % %  ) ) <r