 d343041caa
			
		
	
	
		d343041caa
		
	
	
	
	
		
			
			Introduce explicit abstractions for different mapping types, handling the instantiation, forking, pagefaults and freeing of anonymous memory, direct physical mappings, shared memory and physically contiguous anonymous memory as separate types, making region.c more generic. Also some other genericification like merging the 3 munmap cases into one. COW and SMAP safemap code is still implicit in region.c.
		
			
				
	
	
		
			66 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			66 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| 
 | |
| #ifndef _VM_H
 | |
| #define _VM_H 1
 | |
| 
 | |
| #define _SYSTEM 1
 | |
| 
 | |
| /* Compile in asserts and custom sanity checks at all? */
 | |
| #define SANITYCHECKS	0
 | |
| #define VMSTATS		0
 | |
| 
 | |
| /* VM behaviour */
 | |
| #define MEMPROTECT	0	/* Slab objects not mapped. Access with USE() */
 | |
| #define JUNKFREE	0	/* Fill freed pages with junk */
 | |
| 
 | |
| #include <sys/errno.h>
 | |
| #include <memory.h>
 | |
| 
 | |
| #include "sanitycheck.h"
 | |
| #include "region.h"
 | |
| 
 | |
| /* Memory flags to pt_allocmap() and alloc_mem(). */
 | |
| #define PAF_CLEAR	0x01	/* Clear physical memory. */
 | |
| #define PAF_CONTIG	0x02	/* Physically contiguous. */
 | |
| #define PAF_ALIGN64K	0x04	/* Aligned to 64k boundary. */
 | |
| #define PAF_LOWER16MB	0x08
 | |
| #define PAF_LOWER1MB	0x10
 | |
| #define PAF_ALIGN16K	0x40	/* Aligned to 16k boundary. */
 | |
| 
 | |
| #define MARK do { if(mark) { printf("%d\n", __LINE__); } } while(0)
 | |
| 
 | |
| /* special value for v in pt_allocmap */
 | |
| #define AM_AUTO         ((u32_t) -1)
 | |
| 
 | |
| /* How noisy are we supposed to be? */
 | |
| #define VERBOSE		0
 | |
| #define LU_DEBUG	0
 | |
| 
 | |
| /* Minimum stack region size - 64MB. */
 | |
| #define MINSTACKREGION	(64*1024*1024)
 | |
| 
 | |
| /* If so, this level: */
 | |
| #define SCL_NONE	0	/* No sanity checks - assert()s only. */
 | |
| #define SCL_TOP		1	/* Main loop and other high-level places. */
 | |
| #define SCL_FUNCTIONS	2	/* Function entry/exit. */
 | |
| #define SCL_DETAIL	3	/* Detailled steps. */
 | |
| #define SCL_MAX		3	/* Highest value. */
 | |
| 
 | |
| /* Type of page allocations. */
 | |
| #define VMP_SPARE	0
 | |
| #define VMP_PAGETABLE	1
 | |
| #define VMP_PAGEDIR	2
 | |
| #define VMP_SLAB	3
 | |
| #define VMP_CATEGORIES	4
 | |
| 
 | |
| /* Flags to pt_writemap(). */
 | |
| #define WMF_OVERWRITE		0x01	/* Caller knows map may overwrite. */
 | |
| #define WMF_WRITEFLAGSONLY	0x02	/* Copy physaddr and update flags. */
 | |
| #define WMF_FREE		0x04	/* Free pages overwritten. */
 | |
| #define WMF_VERIFY		0x08	/* Check pagetable contents. */
 | |
| 
 | |
| #define MAP_NONE	0xFFFFFFFE
 | |
| #define NO_MEM ((phys_clicks) MAP_NONE)  /* returned by alloc_mem() with mem is up */
 | |
| 
 | |
| #endif
 | |
| 
 |