a XC?h�G � @ s� d dgZ ddlmZ ddlZddlZddlZddlZddlZddlZej dkr\ddl Z dZnddlZdZej ejB ZdZer�d Znd Zdd� ZG d d � d �ZdZG dd� d�ZdS )�SharedMemory� ShareableList� )�partialN�ntFT� 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 �B/opt/alt/python39/lib64/python3.9/multiprocessing/shared_memory.py�_make_filename' s r c @ s� e Zd ZdZdZdZdZejZ dZ er*dndZddd�Z d d � Zdd� Zd d� Zedd� �Zedd� �Zedd� �Zdd� Zdd� ZdS )r N�����i� TFr c C s� |dkst d��|r0ttjB | _|dkr0t d��|d u rL| jtj@ sLt d��t�rD|d u r�t� }ztj || j| j d�| _W n ty� Y qZY n0 || _ q�qZn.| jr�d| n|}tj || j| j d�| _|| _ z<|r�|r�t�| j|� t�| j�}|j}t�| j|�| _W n t�y& | �� � Y n0 ddlm} || j d � �n*|�r|d u �rZt� n|}t�tjtjtj|d ? d@ |d@ |�}zjt�� }|tjk�r�|d u�r�ttj t�!tj �|tj��nW t�"|� �qJtjd||d �| _W t�"|� nt�"|� 0 || _ �qn�qJnb|| _ t�#tj$d|�}z"t�%|tj$ddd�} W t�"|� nt�"|� 0 t�&| �}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=True)�mode�/� )�register� 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�unlink�resource_trackerr �_winapiZCreateFileMappingZINVALID_HANDLE_VALUEZNULLZPAGE_READWRITEZGetLastErrorZERROR_ALREADY_EXISTS�errnoZEEXIST�strerrorZCloseHandleZOpenFileMappingZ FILE_MAP_READZ MapViewOfFileZVirtualQuerySize�_size� memoryview�_buf) �selfr �create�sizeZstatsr Z temp_nameZh_mapZlast_error_codeZp_bufr r r �__init__J s� � � � � � �� zSharedMemory.__init__c C s$ z| � � W n ty Y n0 d S �N)�closer* �r3 r r r �__del__� s zSharedMemory.__del__c C s | j | jd| jffS )NF)� __class__r r5 r9 r r r � __reduce__� s ��zSharedMemory.__reduce__c C s | j j� d| j�d| j� d�S )N�(z, size=�))r; �__name__r r5 r9 r r r �__repr__� s zSharedMemory.__repr__c C s | j S r7 )r2 r9 r r r �buf� s zSharedMemory.bufc C s. | j }tr*| jr*| j �d�r*| j dd � }|S )Nr r )r# r r$ � startswith)r3 Z reported_namer r r r � s zSharedMemory.namec C s | j S r7 )r0 r9 r r r r5 � s zSharedMemory.sizec C sX | j d ur| j �� d | _ | jd ur4| j�� d | _trT| jdkrTt�| j� d| _d S )Nr r )r2 �releaser) r8 r r! r r9 r r r r8 � s zSharedMemory.closec C s2 t r.| jr.ddlm} t�| j� || jd� d S )Nr )� unregisterr )r r# r, rD r Z shm_unlink)r3 rD r r r r+ � s zSharedMemory.unlink)NFr )r? � __module__�__qualname__r# r! r) r2 r r r r r r$ r6 r: r<