7.4.3.5 Free Function

Figure [*] shows the memory-block free function. Line 6 gets a pointer to this thread's pool, and line 7 checks to see if this per-thread pool is full.

If so, lines 8-15 empty half of the per-thread pool into the global pool, with lines 8 and 14 acquiring and releasing the spinlock. Lines 9-12 implement the loop moving blocks from the local to the global pool, and line 13 sets the per-thread pool's count to the proper value.

In either case, line 16 then places the newly freed block into the per-thread pool.

Figure: Allocator-Cache Free Function
\begin{figure}{ \scriptsize
\begin{verbatim}1 void memblock_free(struct membl...
...tex);
15 }
16 pcpp->pool[++pcpp->cur] = p;
17 }\end{verbatim}
}\end{figure}



Paul E. McKenney 2011-12-16