A new call to vm lets processes yield a part of their memory to vm, together with an id, getting newly allocated memory in return. vm is allowed to forget about it if it runs out of memory. processes can ask for it back using the same id. (These two operations are normally combined in a single call.) It can be used as a as-big-as-memory-will-allow block cache for filesystems, which is how mfs now uses it.
		
			
				
	
	
		
			21 lines
		
	
	
		
			287 B
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			21 lines
		
	
	
		
			287 B
		
	
	
	
		
			C
		
	
	
	
	
	
 | 
						|
#ifndef _YIELDED_H 
 | 
						|
#define _YIELDED_H 1
 | 
						|
 | 
						|
#include <minix/type.h>
 | 
						|
 | 
						|
typedef struct yielded {
 | 
						|
	u64_t		id;
 | 
						|
	phys_bytes	addr, len;
 | 
						|
	endpoint_t	owner;
 | 
						|
 | 
						|
	/* LRU fields */
 | 
						|
	struct yielded	*younger, *older;
 | 
						|
 | 
						|
	/* AVL fields */
 | 
						|
	struct yielded	*less, *greater;
 | 
						|
	int		factor;
 | 
						|
} yielded_t;
 | 
						|
 | 
						|
#endif
 |