File: //usr/local/lib/python3.10/multiprocessing/__pycache__/shared_memory.cpython-310.opt-2.pyc
o
�iH � @ s� d dgZ ddlmZ ddlZddlZddlZddlZddlZddlZej dkr/ddl
Z
dZnddlZdZdd l
mZ ejejB Zd
ZerHdZndZd
d� ZG dd � d �ZdZG dd� d�ZdS )�SharedMemory�
ShareableList� )�partialN�ntFT� )�resource_tracker� z/psm_Zwnsm_c C s$ t tt� d } tt�| � }|S )N� )�_SHM_SAFE_NAME_LENGTH�len�_SHM_NAME_PREFIX�secretsZ token_hex)�nbytes�name� r �:/usr/local/lib/python3.10/multiprocessing/shared_memory.py�_make_filename( s r c @ s� e Zd Z dZdZdZdZejZ dZ
erdndZddd�Z
d d
� Zdd� Zd
d� Zedd� �Zedd� �Zedd� �Zdd� Zdd� ZdS )r N���i� TFr c C sx |dkst d��|rttjB | _|dkrt d��|d u r&| jtj@ s&t d��tr�|d u rL t� }z
tj || j| j
d�| _W n tyF Y q,w || _
n| jrSd| n|}tj || j| j
d�| _|| _
z|ro|rot�| j|� t�| j�}|j}t�| j|�| _W n ty� | �� � w t�| j
d� n�|r� |d u r�t� n|}t�tjtjtj|d ? d
@ |d
@ |�}z1t�� }|tjkr�|d ur�ttj t�!tj �|tj��W t�"|� q�tjd||d�| _W t�"|� nt�"|� w || _
n?|| _
t�#tj$d
|�}zt�%|tj$ddd�}W t�"|� nt�"|� w zt�&|�}W t�'|� nt�'|� w tjd||d�| _|| _(t)| j�| _*d S )Nr z!'size' must be a positive integerz4'size' must be a positive number different from zeroz&'name' can only be None if create=TrueT)�mode�/�
shared_memory� l �� r )ZtagnameF)+�
ValueError�_O_CREX�os�O_RDWR�_flags�O_EXCL�
_USE_POSIXr �_posixshmemZshm_open�_mode�_fd�FileExistsError�_name�_prepend_leading_slash� ftruncate�fstat�st_size�mmap�_mmap�OSError�unlinkr �register�_winapiZCreateFileMappingZINVALID_HANDLE_VALUEZNULLZPAGE_READWRITEZGetLastErrorZERROR_ALREADY_EXISTS�errno�EEXIST�strerrorZCloseHandleZOpenFileMappingZ
FILE_MAP_READZ
MapViewOfFileZVirtualQuerySizeZUnmapViewOfFile�_size�
memoryview�_buf) �selfr �create�sizeZstatsZ temp_nameZh_mapZlast_error_codeZp_bufr r r �__init__K s� ����
�
����zSharedMemory.__init__c C s$ z| � � W d S ty Y d S w �N)�closer* �r4 r r r �__del__� s
�zSharedMemory.__del__c C s | j | jd| jffS )NF)� __class__r r6 r: r r r �
__reduce__� s ��zSharedMemory.__reduce__c C s | j j� d| j�d| j� d�S )N�(z, size=�))r<