h->next = fl->head;
HEADER_NEXT (h) = fl->head; #ifdef MCHECK HEADER_CHECK (h) = CHECK_FREE; #endif
free(base)	void *base;{	register header_t h;	register free_list_t fl;	register int i;	if (base == 0)		return;	/*	 * Find free list for block.	 */	h = (header_t) (base - sizeof(union header));	fl = h->fl;	i = fl - malloc_free_list;	/*	 * Sanity checks.	 */	if (i < 0 || i >= NBUCKETS) {		ASSERT(0 <= i && i < NBUCKETS);		return;	}	if (fl != &malloc_free_list[i]) {		ASSERT(fl == &malloc_free_list[i]);		return;	}	/*	 * Push block on free list.	 */	spin_lock(&fl->lock);	h->next = fl->head;	fl->head = h;#ifdef	DEBUG	fl->in_use -= 1;#endif	DEBUG	spin_unlock(&fl->lock);	return;}