[M3devel] LockHeap
    Tony Hosking 
    hosking at cs.purdue.edu
       
    Wed Aug 13 21:23:49 CEST 2014
    
    
  
On Aug 12, 2014, at 9:47 PM, mika at async.caltech.edu wrote:
> 
> The code in LockHeap looks dubious to me:
Yes, it was a broken and incomplete attempt.  I’ve reverted to what we used to have that actually works.
> I note that the documentation in RTOS.i3 also seems slightly incorrect:
> 
> PROCEDURE WaitHeap (VAR thread: RTHeapRep.ThreadState);
> 
>     Blocks the caller until BroadcastHeap has been called and the allocator/collector critical section is released. The caller must be in the critical section.
> 
> Shouldn't it say "The calling thread must have entered the critical
> section exactly once."?  (Given that the "LockHeap" is reentrant…)
Yes, true.
> Why is there a reentrant mutex here, anyhow?
Reentrant because it is possible for the collector thread to try to re-enter the collector when performing allocation.  It would be possible to carry a flag down through the recursion, but this is the way it has always been (since DEC SRC days).
    
    
More information about the M3devel
mailing list