Ñò
$8Zc           @   s  d  d k  Z  d  d k Z d  d k Z d  d k Z d  d k Z d  d k Z d  d k Z d  d k Z d  d k l	 Z	 l
 Z
 d  d k l Z d g Z e i d j o* d  d k l Z d e f d „  ƒ  YZ n d e f d	 „  ƒ  YZ d
 e f d „  ƒ  YZ d e f d „  ƒ  YZ d S(   iÿÿÿÿN(   t   Finalizet   info(   t   assert_spawningt   BufferWrappert   win32(   R   t   Arenac           B   s/   e  Z e i ƒ  Z d  „  Z d „  Z d „  Z RS(   c         C   s‚   | |  _  d t i ƒ  t i i ƒ  f |  _ t i d |  i  d |  i ƒ|  _ t	 i
 ƒ  d j p
 t d ‚ |  i  |  i f |  _ d  S(   Ns	   pym-%d-%diÿÿÿÿt   tagnamei    s   tagname already in use(   t   sizet   ost   getpidR   t   _countert   nextt   namet   mmapt   bufferR   t   GetLastErrort   AssertionErrort   _state(   t   selfR   (    (    s*   /usr/lib/python2.6/multiprocessing/heap.pyt   __init__#   s
    	"!c         C   s   t  |  ƒ |  i S(   N(   R   R   (   R   (    (    s*   /usr/lib/python2.6/multiprocessing/heap.pyt   __getstate__*   s    
c         C   s[   | \ |  _  |  _ |  _ t i d |  i  d |  i ƒ|  _ t i ƒ  t i j p t ‚ d  S(   NiÿÿÿÿR   (	   R   R   R   R   R   R   R   t   ERROR_ALREADY_EXISTSR   (   R   t   state(    (    s*   /usr/lib/python2.6/multiprocessing/heap.pyt   __setstate__.   s    !(   t   __name__t
   __module__t	   itertoolst   countR
   R   R   R   (    (    (    s*   /usr/lib/python2.6/multiprocessing/heap.pyR      s   		c           B   s   e  Z d  „  Z RS(   c         C   s+   t  i  d | ƒ |  _ | |  _ d  |  _ d  S(   Niÿÿÿÿ(   R   R   R   t   NoneR   (   R   R   (    (    s*   /usr/lib/python2.6/multiprocessing/heap.pyR   7   s    	(   R   R   R   (    (    (    s*   /usr/lib/python2.6/multiprocessing/heap.pyR   5   s   t   Heapc           B   sY   e  Z d  Z e i d „ Z e d „  ƒ Z d „  Z d „  Z	 d „  Z
 d „  Z d „  Z RS(   i   c         C   sd   t  i ƒ  |  _ t i ƒ  |  _ | |  _ g  |  _ h  |  _ h  |  _	 h  |  _
 t ƒ  |  _ g  |  _ d  S(   N(   R   R	   t   _lastpidt	   threadingt   Lockt   _lockt   _sizet   _lengthst   _len_to_seqt   _start_to_blockt   _stop_to_blockt   sett   _allocated_blockst   _arenas(   R   R   (    (    s*   /usr/lib/python2.6/multiprocessing/heap.pyR   D   s    					c         C   s   | d } |  | | @S(   Ni   (    (   t   nt	   alignmentt   mask(    (    s*   /usr/lib/python2.6/multiprocessing/heap.pyt   _roundupO   s    
c   	      C   s
  t  i |  i | ƒ } | t |  i ƒ j og |  i t |  i | ƒ t i ƒ } |  i d 9_ t	 d | ƒ t
 | ƒ } |  i i | ƒ | d | f S|  i | } |  i | } | i ƒ  } | p |  i | =|  i | =n | \ } } } |  i | | f =|  i | | f =| S(   Ni   s"   allocating a new mmap of length %di    (   t   bisectt   bisect_leftR#   t   lenR-   t   maxR"   R   t   PAGESIZER   R   R)   t   appendR$   t   popR%   R&   (	   R   R   t   it   lengtht   arenat   seqt   blockt   startt   stop(    (    s*   /usr/lib/python2.6/multiprocessing/heap.pyt   _mallocU   s"    !c   	      C   s'  | \ } } } y |  i  | | f } Wn t j
 o n X|  i | ƒ \ } } y |  i | | f } Wn t j
 o n X|  i | ƒ \ } } | | | f } | | } y |  i | i | ƒ Wn6 t j
 o* | g |  i | <t i |  i | ƒ n X| |  i | | f <| |  i  | | f <d  S(   N(	   R&   t   KeyErrort   _absorbR%   R$   R3   R.   t   insortR#   (	   R   R9   R7   R:   R;   t
   prev_blockt   _t
   next_blockR6   (    (    s*   /usr/lib/python2.6/multiprocessing/heap.pyt   _freek   s(    
c         C   s‚   | \ } } } |  i  | | f =|  i | | f =| | } |  i | } | i | ƒ | p |  i | =|  i i | ƒ n | | f S(   N(   R%   R&   R$   t   removeR#   (   R   R9   R7   R:   R;   R6   R8   (    (    s*   /usr/lib/python2.6/multiprocessing/heap.pyR>   ‰   s    

c         C   s`   t  i ƒ  |  i j p t ‚ |  i i ƒ  z! |  i i | ƒ |  i | ƒ Wd  |  i i	 ƒ  Xd  S(   N(
   R   R	   R   R   R!   t   acquireR(   RD   RC   t   release(   R   R9   (    (    s*   /usr/lib/python2.6/multiprocessing/heap.pyt   free˜   s    c         C   sü   d | j o t  i j  n p t ‚ t i ƒ  |  i j o |  i ƒ  n |  i i ƒ  zŽ |  i	 t
 | d ƒ |  i ƒ } |  i | ƒ \ } } } | | } | | j  o |  i | | | f ƒ n | | | f } |  i i | ƒ | SWd  |  i i ƒ  Xd  S(   Ni    i   (   t   syst   maxintR   R   R	   R   R   R!   RE   R-   R1   t
   _alignmentR<   RC   R(   t   addRF   (   R   R   R7   R:   R;   t   new_stopR9   (    (    s*   /usr/lib/python2.6/multiprocessing/heap.pyt   malloc¢   s    (
(   R   R   RJ   R   R2   R   t   staticmethodR-   R<   RC   R>   RG   RM   (    (    (    s*   /usr/lib/python2.6/multiprocessing/heap.pyR   @   s   				
c           B   s,   e  Z e ƒ  Z d  „  Z d „  Z d „  Z RS(   c         C   si   d | j o t  i j  n p t ‚ t i i | ƒ } | | f |  _ t |  t i i d | f ƒd  S(   Ni    t   args(	   RH   RI   R   R   t   _heapRM   R   R    RG   (   R   R   R9   (    (    s*   /usr/lib/python2.6/multiprocessing/heap.pyR   ¼   s    (c         C   sL   |  i  \ \ } } } } t i | i ƒ \ } } | | j p t ‚ | | S(   N(   R   t   _multiprocessingt   address_of_bufferR   R   (   R   R7   R:   R;   R   t   addressR6   (    (    s*   /usr/lib/python2.6/multiprocessing/heap.pyt   get_addressÂ   s    c         C   s   |  i  d S(   Ni   (   R   (   R   (    (    s*   /usr/lib/python2.6/multiprocessing/heap.pyt   get_sizeÈ   s    (   R   R   R   RP   R   RT   RU   (    (    (    s*   /usr/lib/python2.6/multiprocessing/heap.pyR   ¸   s   			(   R.   R   t   tempfileR   RH   R   R   RQ   t   multiprocessing.utilR    R   t   multiprocessing.forkingR   t   __all__t   platformR   t   objectR   R   R   (    (    (    s*   /usr/lib/python2.6/multiprocessing/heap.pyt   <module>	   s    	x