X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fthreads%2Finit.c;h=8a037058a7358bea829c75153cfdca313570febd;hb=bcf9f9ab10a3df0fd12e6e69944307a63967a521;hp=a831a80b31a3bcdcdb9699334837203cad8f888a;hpb=d92d837ee458bff7687e4208607e98c5b8e017c2;p=pintos-anon diff --git a/src/threads/init.c b/src/threads/init.c index a831a80..8a03705 100644 --- a/src/threads/init.c +++ b/src/threads/init.c @@ -40,7 +40,7 @@ size_t ram_pages; /* Page directory with kernel mappings only. */ -uint32_t *base_page_dir; +uint32_t *init_page_dir; #ifdef FILESYS /* -f: Format the file system? */ @@ -53,6 +53,9 @@ bool power_off_when_done; /* -r: Reboot after kernel tasks complete? */ static bool reboot_when_done; +/* -ul: Maximum number of pages to put into palloc's user pool. */ +static size_t user_page_limit = SIZE_MAX; + static void ram_init (void); static void paging_init (void); @@ -88,7 +91,7 @@ main (void) printf ("Pintos booting with %'zu kB RAM...\n", ram_pages * PGSIZE / 1024); /* Initialize memory system. */ - palloc_init (); + palloc_init (user_page_limit); malloc_init (); paging_init (); @@ -152,7 +155,7 @@ ram_init (void) /* Populates the base page directory and page table with the kernel virtual mapping, and then sets up the CPU to use the - new page directory. Points base_page_dir to the page + new page directory. Points init_page_dir to the page directory it creates. At the time this function is called, the active page table @@ -166,7 +169,7 @@ paging_init (void) size_t page; extern char _start, _end_kernel_text; - pd = base_page_dir = palloc_get_page (PAL_ASSERT | PAL_ZERO); + pd = init_page_dir = palloc_get_page (PAL_ASSERT | PAL_ZERO); pt = NULL; for (page = 0; page < ram_pages; page++) { @@ -190,7 +193,7 @@ paging_init (void) new page tables immediately. See [IA32-v2a] "MOV--Move to/from Control Registers" and [IA32-v3a] 3.7.5 "Base Address of the Page Directory". */ - asm volatile ("movl %0, %%cr3" : : "r" (vtop (base_page_dir))); + asm volatile ("movl %0, %%cr3" : : "r" (vtop (init_page_dir))); } /* Breaks the kernel command line into words and returns them as