Coherent4.2.10/include/sys/malloc.h

/* (-lgl
 *	Coherent 386 release 4.2
 *	Copyright (c) 1982, 1993 by Mark Williams Company.
 *	All rights reserved. May not be copied without permission.
 *	For copying permission and licensing info, write licensing@mwc.com
 -lgl) */

#ifndef	__SYS_MALLOC_H__
#define	__SYS_MALLOC_H__

/*
 * This header file belongs to the malloc () implementation that was part of
 * the C library in COHERENT releases up to 4.2.
 */

/* Manifest constants. */
/*
 * N.B. 1<<ARENASIZE must be greater than sizeof(struct mblock)
 * so that malloc.c/newarena() does not cause trouble when it combines arenas.
 */

#define	ARENASIZE	12	/* round arena sizes up to 1<<12==4096	*/
#define	BLOCKSIZE	2	/* round block sizes up to 1<<2==4	*/

#define	ALIGNMENT (1<<BLOCKSIZE) /* maximum alignment for any data type	*/
#define	BADSBRK   ((char *)-1)	/* sbrk() failure return value		*/
#define	DECRSIZE	4096	/* arena size decrement at end		*/
#define	FREE		1	/* free block marker			*/
#define	LEASTFREE (2*sizeof(unsigned))	/* free nothing smaller		*/

/* Macros. */
#define	bumpp(p,n)	(((char *)(p))+(n))	/* bump pointer p by n bytes */
#define	isfree(x)	(((unsigned)(x))&FREE)
#define	mblockp(p)	((char *)(p)-sizeof(unsigned))	/* convert malloc ptr */
#define	realsize(x)	((x) & ~FREE)
#define	roundup(i,j)	(((i) + (1 << (j)) - 1) & ~((1 << (j)) - 1))

/* Memory block structure. */
typedef	struct	mblock	{
	unsigned blksize;
	union {
		char	 *next;
		unsigned usera [1];
	} uval;
} MBLOCK;

/* Globals common to malloc/realloc/memok/notmem. */
extern	unsigned __a_count;
extern	MBLOCK	*__a_scanp, *__a_first, *__a_top;

#endif	/* ! defined (__SYS_MALLOC_H__) */