35 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
		
		
			
		
	
	
			35 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
|  | /*
 | ||
|  | Copyright (C) 2015-2019 The University of Notre Dame | ||
|  | This software is distributed under the GNU General Public License. | ||
|  | See the file LICENSE for details. | ||
|  | */ | ||
|  | 
 | ||
|  | #ifndef PAGETABLE_H
 | ||
|  | #define PAGETABLE_H
 | ||
|  | 
 | ||
|  | #define PAGE_SIZE 4096
 | ||
|  | 
 | ||
|  | #define PAGE_FLAG_USER        0
 | ||
|  | #define PAGE_FLAG_KERNEL      1
 | ||
|  | #define PAGE_FLAG_EXISTS      0
 | ||
|  | #define PAGE_FLAG_ALLOC       2
 | ||
|  | #define PAGE_FLAG_READONLY    0
 | ||
|  | #define PAGE_FLAG_READWRITE   4
 | ||
|  | #define PAGE_FLAG_NOCLEAR     0
 | ||
|  | #define PAGE_FLAG_CLEAR       8
 | ||
|  | 
 | ||
|  | struct pagetable *pagetable_create(); | ||
|  | void pagetable_init(struct pagetable *p); | ||
|  | int pagetable_map(struct pagetable *p, unsigned vaddr, unsigned paddr, int flags); | ||
|  | int pagetable_getmap(struct pagetable *p, unsigned vaddr, unsigned *paddr, int *flags); | ||
|  | void pagetable_unmap(struct pagetable *p, unsigned vaddr); | ||
|  | void pagetable_alloc(struct pagetable *p, unsigned vaddr, unsigned length, int flags); | ||
|  | void pagetable_free(struct pagetable *p, unsigned vaddr, unsigned length); | ||
|  | void pagetable_delete(struct pagetable *p); | ||
|  | struct pagetable *pagetable_duplicate(struct pagetable *p); | ||
|  | struct pagetable *pagetable_load(struct pagetable *p); | ||
|  | void pagetable_enable(); | ||
|  | void pagetable_refresh(); | ||
|  | 
 | ||
|  | #endif
 |