HEX
Server: Apache/2.4.63 (Unix)
System: Linux TOMS-220NAS 4.4.302+ #86009 SMP Wed Nov 26 18:19:17 CST 2025 x86_64
User: flavio87 (1026)
PHP: 8.3.27
Disabled: NONE
Upload Files
File: //proc/25637/root/usr/lib/python3.8/multiprocessing/__pycache__/heap.cpython-38.pyc
U

}W���e#1�@s�ddlZddlmZddlZddlZddlZddlZddlZddlm	Z	m
Z
ddlmZdgZ
ejdkr�ddlZGdd	�d	e�Zn,Gd
d	�d	e�Zdd�Zd
d�Ze	�ee�Gdd�de�ZGdd�de�ZdS)�N)�defaultdict�)�	reduction�assert_spawning)�util�
BufferWrapper�win32c@s0eZdZdZe��Zdd�Zdd�Zdd�Z	dS)	�ArenazL
        A shared memory area backed by anonymous memory (Windows).
        cCsx||_td�D]B}dt��t|j�f}tjd||d�}t��dkrHqZ|�	�qt
d��||_||_|j|jf|_
dS)N�dz	pym-%d-%s����ZtagnamerzCannot find name for new mmap)�size�range�os�getpid�next�_rand�mmap�_winapiZGetLastError�close�FileExistsError�name�buffer�_state)�selfr
�ir�buf�r�?/tmp/_install_python3/usr/lib/python3.8/multiprocessing/heap.py�__init__&s
�Arena.__init__cCst|�|jS�N)rr)rrrr�__getstate__5szArena.__getstate__cCs,|\|_|_|_tjd|j|jd�|_dS)Nrr)r
rrrr)r�staterrr�__setstate__9szArena.__setstate__N)
�__name__�
__module__�__qualname__�__doc__�tempfileZ_RandomNameSequencerrr"r$rrrrr	s
r	c@s8eZdZdZejdkrdgZngZd
dd�Zdd�Zd	S)r	zJ
        A shared memory area backed by a temporary file (POSIX).
        Zlinuxz/dev/shmrcCsx||_||_|dkrbtjdt��|�|�d�\|_}t�|�t�	|tj
|jf�t�|j|�t�|j|j�|_
dS)Nrzpym-%d-)�prefix�dir)r
�fdr)Zmkstemprr�_choose_dir�unlinkr�Finalizer�	ftruncaterr)rr
r,rrrrrMs
�
r cCs6|jD]&}t�|�}|j|j|kr|Sqt��Sr!)�_dir_candidatesr�statvfs�f_bavail�f_frsizerZget_temp_dir)rr
�d�strrrr-[s



zArena._choose_dirN)r)	r%r&r'r(�sys�platformr1rr-rrrrr	Cs

cCs(|jdkrtd��t|jt�|j�ffS)NrzDArena is unpicklable because forking was enabled when it was created)r,�
ValueError�
rebuild_arenar
rZDupFd)�arrr�reduce_arenads
r<cCst||���Sr!)r	�detach)r
Zdupfdrrrr:jsr:c@szeZdZdZdZdZejfdd�Ze	dd��Z
dd�Zd	d
�Zdd�Z
d
d�Zdd�Zdd�Zdd�Zdd�Zdd�ZdS)�Heap�i@cCsXt��|_t��|_||_g|_i|_i|_	i|_
tt�|_
g|_g|_d|_d|_dS�Nr)rr�_lastpid�	threading�Lock�_lock�_size�_lengths�_len_to_seq�_start_to_block�_stop_to_blockr�set�_allocated_blocks�_arenas�_pending_free_blocks�
_n_mallocs�_n_frees)rr
rrrr{s


z
Heap.__init__cCs|d}|||@S)Nrr)�nZ	alignment�maskrrr�_roundup�sz
Heap._roundupcCsZ|�t|j|�tj�}|j|jkr0|jd9_t�d|�t|�}|j	�
|�|d|fS)N�z"allocating a new mmap of length %dr)rR�maxrEr�PAGESIZE�_DOUBLE_ARENA_SIZE_UNTILr�infor	rL�append)rr
�length�arenarrr�
_new_arena�szHeap._new_arenacCs�|j}||jkrdS|j�|�}|r(t�|j|df=|j||f=|j�|�|j	|}|�|d|f�|s~|j	|=|j
�|�dSr@)r
�_DISCARD_FREE_SPACE_LARGER_THANrK�pop�AssertionErrorrHrIrL�removerGrF)rrZrY�blocks�seqrrr�_discard_arena�s

zHeap._discard_arenac	Cs|t�|j|�}|t|j�kr&|�|�S|j|}|j|}|��}|sV|j|=|j|=|\}}}|j||f=|j||f=|Sr!)	�bisectZbisect_leftrF�lenr[rGr]rHrI)	rr
rrYra�blockrZ�start�stoprrr�_malloc�s



zHeap._mallocc	Cs�|\}}}z|j||f}Wntk
r0YnX|�|�\}}z|j||f}Wntk
rfYnX|�|�\}}|||f}||}z|j|�|�Wn.tk
r�|g|j|<t�|j|�YnX||j||f<||j||f<dSr!)	rI�KeyError�_absorbrHrGrXrcZinsortrF)	rrerZrfrgZ
prev_block�_Z
next_blockrYrrr�_add_free_block�s(

zHeap._add_free_blockcCs^|\}}}|j||f=|j||f=||}|j|}|�|�|sV|j|=|j�|�||fSr!)rHrIrGr_rF)rrerZrfrgrYrarrrrj�s


zHeap._absorbcCs4|\}}}|j|}|�||f�|s0|�|�dSr!)rKr_rb)rrerZrfrgr`rrr�_remove_allocated_block�s


zHeap._remove_allocated_blockcCsBz|j��}Wntk
r&Yq>YnX|�|�|�|�qdSr!)rMr]�
IndexErrorrlrm�rrerrr�_free_pending_blockss

zHeap._free_pending_blockscCs~t��|jkr$td�t��|j���|j�d�s>|j�|�n<z.|j
d7_
|��|�|�|�
|�W5|j�	�XdS)Nz$My pid ({0:n}) is not last pid {1:n}Fr)rrrAr9�formatrD�acquirerMrX�releaserOrprlrmrorrr�frees
��
z	Heap.freec
Cs�|dkrtd�|���tj|kr.td�|���t��|jkrD|��|j	��|j
d7_
|��|�t
|d�|j�}|�|�\}}}||}||kr�|�|||f�|j|�||f�|||fW5QR�SQRXdS)Nr�Size {0:n} out of range�Size {0:n} too larger)r9rqr7�maxsize�
OverflowErrorrrrArrDrNrprRrT�
_alignmentrhrlrK�add)rr
rZrfrgZ	real_stoprrr�malloc(s 
zHeap.mallocN)r%r&r'ryr\rVrrUr�staticmethodrRr[rbrhrlrjrmrprtr{rrrrr>ss

r>c@s"eZdZe�Zdd�Zdd�ZdS)rcCs^|dkrtd�|���tj|kr.td�|���tj�|�}||f|_t	j
|tjj|fd�dS)Nrrurv)�args)r9rqr7rwrxr�_heapr{rrr/rt)rr
rerrrrFs

zBufferWrapper.__init__cCs&|j\\}}}}t|j�|||�Sr!)r�
memoryviewr)rrZrfrgr
rrr�create_memoryviewOszBufferWrapper.create_memoryviewN)r%r&r'r>r~rr�rrrrrBs	)rc�collectionsrrrr7r)rB�contextrr�r�__all__r8r�objectr	r<r:�registerr>rrrrr�<module>
s&
$!P