25 lines
		
	
	
	
		
			539 B
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			25 lines
		
	
	
	
		
			539 B
		
	
	
	
		
			C
		
	
	
	
	
	
/* This is an ANSI C version of the classic K&R memory allocator, with
 | 
						|
 * some improvements stolen from the Fuzix libc.
 | 
						|
 */
 | 
						|
 | 
						|
#ifndef MALLOC_H
 | 
						|
#define MALLOC_H
 | 
						|
 | 
						|
typedef struct block_s {
 | 
						|
	struct block_s* next;
 | 
						|
	size_t size; /* in sizeof(block_t) units */
 | 
						|
} block_t;
 | 
						|
 | 
						|
extern block_t __mem_root;
 | 
						|
extern block_t* __mem_first_free;
 | 
						|
 | 
						|
#define BLOCKOF(p) (((block_t*)(p)) - 1)
 | 
						|
 | 
						|
/* Smallest amount to allocate from brk */
 | 
						|
#define BRKSIZE (512 / sizeof(block_t))
 | 
						|
 | 
						|
#define BLOCKCOUNT(bytes) \
 | 
						|
	(bytes + sizeof(block_t) + sizeof(block_t) - 1)
 | 
						|
 | 
						|
#endif
 | 
						|
 |