diff --git a/labcodes/lab3/kern/mm/swap_fifo.c b/labcodes/lab3/kern/mm/swap_fifo.c index 4cb00c1..3e302f7 100644 --- a/labcodes/lab3/kern/mm/swap_fifo.c +++ b/labcodes/lab3/kern/mm/swap_fifo.c @@ -102,6 +102,13 @@ _fifo_check_swap(void) { cprintf("write Virt Page d in fifo_check_swap\n"); *(unsigned char *)0x4000 = 0x0d; assert(pgfault_num==9); + cprintf("write Virt Page e in fifo_check_swap\n"); + *(unsigned char *)0x5000 = 0x0e; + assert(pgfault_num==10); + cprintf("write Virt Page a in fifo_check_swap\n"); + assert(*(unsigned char *)0x1000 == 0x0a); + *(unsigned char *)0x1000 = 0x0a; + assert(pgfault_num==11); return 0; } diff --git a/labcodes/lab4/kern/mm/swap_fifo.c b/labcodes/lab4/kern/mm/swap_fifo.c index 4cb00c1..3e302f7 100644 --- a/labcodes/lab4/kern/mm/swap_fifo.c +++ b/labcodes/lab4/kern/mm/swap_fifo.c @@ -102,6 +102,13 @@ _fifo_check_swap(void) { cprintf("write Virt Page d in fifo_check_swap\n"); *(unsigned char *)0x4000 = 0x0d; assert(pgfault_num==9); + cprintf("write Virt Page e in fifo_check_swap\n"); + *(unsigned char *)0x5000 = 0x0e; + assert(pgfault_num==10); + cprintf("write Virt Page a in fifo_check_swap\n"); + assert(*(unsigned char *)0x1000 == 0x0a); + *(unsigned char *)0x1000 = 0x0a; + assert(pgfault_num==11); return 0; } diff --git a/labcodes/lab5/kern/mm/swap_fifo.c b/labcodes/lab5/kern/mm/swap_fifo.c index 4cb00c1..3e302f7 100644 --- a/labcodes/lab5/kern/mm/swap_fifo.c +++ b/labcodes/lab5/kern/mm/swap_fifo.c @@ -102,6 +102,13 @@ _fifo_check_swap(void) { cprintf("write Virt Page d in fifo_check_swap\n"); *(unsigned char *)0x4000 = 0x0d; assert(pgfault_num==9); + cprintf("write Virt Page e in fifo_check_swap\n"); + *(unsigned char *)0x5000 = 0x0e; + assert(pgfault_num==10); + cprintf("write Virt Page a in fifo_check_swap\n"); + assert(*(unsigned char *)0x1000 == 0x0a); + *(unsigned char *)0x1000 = 0x0a; + assert(pgfault_num==11); return 0; } diff --git a/labcodes/lab6/kern/mm/swap_fifo.c b/labcodes/lab6/kern/mm/swap_fifo.c index 4cb00c1..3e302f7 100644 --- a/labcodes/lab6/kern/mm/swap_fifo.c +++ b/labcodes/lab6/kern/mm/swap_fifo.c @@ -102,6 +102,13 @@ _fifo_check_swap(void) { cprintf("write Virt Page d in fifo_check_swap\n"); *(unsigned char *)0x4000 = 0x0d; assert(pgfault_num==9); + cprintf("write Virt Page e in fifo_check_swap\n"); + *(unsigned char *)0x5000 = 0x0e; + assert(pgfault_num==10); + cprintf("write Virt Page a in fifo_check_swap\n"); + assert(*(unsigned char *)0x1000 == 0x0a); + *(unsigned char *)0x1000 = 0x0a; + assert(pgfault_num==11); return 0; } diff --git a/labcodes/lab7/kern/mm/swap_fifo.c b/labcodes/lab7/kern/mm/swap_fifo.c index 4cb00c1..3e302f7 100644 --- a/labcodes/lab7/kern/mm/swap_fifo.c +++ b/labcodes/lab7/kern/mm/swap_fifo.c @@ -102,6 +102,13 @@ _fifo_check_swap(void) { cprintf("write Virt Page d in fifo_check_swap\n"); *(unsigned char *)0x4000 = 0x0d; assert(pgfault_num==9); + cprintf("write Virt Page e in fifo_check_swap\n"); + *(unsigned char *)0x5000 = 0x0e; + assert(pgfault_num==10); + cprintf("write Virt Page a in fifo_check_swap\n"); + assert(*(unsigned char *)0x1000 == 0x0a); + *(unsigned char *)0x1000 = 0x0a; + assert(pgfault_num==11); return 0; } diff --git a/labcodes/lab8/kern/mm/swap_fifo.c b/labcodes/lab8/kern/mm/swap_fifo.c index 4cb00c1..3e302f7 100644 --- a/labcodes/lab8/kern/mm/swap_fifo.c +++ b/labcodes/lab8/kern/mm/swap_fifo.c @@ -102,6 +102,13 @@ _fifo_check_swap(void) { cprintf("write Virt Page d in fifo_check_swap\n"); *(unsigned char *)0x4000 = 0x0d; assert(pgfault_num==9); + cprintf("write Virt Page e in fifo_check_swap\n"); + *(unsigned char *)0x5000 = 0x0e; + assert(pgfault_num==10); + cprintf("write Virt Page a in fifo_check_swap\n"); + assert(*(unsigned char *)0x1000 == 0x0a); + *(unsigned char *)0x1000 = 0x0a; + assert(pgfault_num==11); return 0; } diff --git a/labcodes_answer/lab3_result/kern/mm/swap_fifo.c b/labcodes_answer/lab3_result/kern/mm/swap_fifo.c index ae6caf3..4f9dc8f 100644 --- a/labcodes_answer/lab3_result/kern/mm/swap_fifo.c +++ b/labcodes_answer/lab3_result/kern/mm/swap_fifo.c @@ -110,6 +110,13 @@ _fifo_check_swap(void) { cprintf("write Virt Page d in fifo_check_swap\n"); *(unsigned char *)0x4000 = 0x0d; assert(pgfault_num==9); + cprintf("write Virt Page e in fifo_check_swap\n"); + *(unsigned char *)0x5000 = 0x0e; + assert(pgfault_num==10); + cprintf("write Virt Page a in fifo_check_swap\n"); + assert(*(unsigned char *)0x1000 == 0x0a); + *(unsigned char *)0x1000 = 0x0a; + assert(pgfault_num==11); return 0; } diff --git a/labcodes_answer/lab3_result/kern/mm/vmm.c b/labcodes_answer/lab3_result/kern/mm/vmm.c index 33065c5..89bdfb8 100644 --- a/labcodes_answer/lab3_result/kern/mm/vmm.c +++ b/labcodes_answer/lab3_result/kern/mm/vmm.c @@ -419,6 +419,7 @@ do_pgfault(struct mm_struct *mm, uint32_t error_code, uintptr_t addr) { } page_insert(mm->pgdir, page, addr, perm); swap_map_swappable(mm, addr, page, 1); + page->pra_vaddr = addr; } else { cprintf("no swap_init_ok but ptep is %x, failed\n",*ptep); diff --git a/labcodes_answer/lab4_result/kern/mm/swap_fifo.c b/labcodes_answer/lab4_result/kern/mm/swap_fifo.c index ae6caf3..4f9dc8f 100644 --- a/labcodes_answer/lab4_result/kern/mm/swap_fifo.c +++ b/labcodes_answer/lab4_result/kern/mm/swap_fifo.c @@ -110,6 +110,13 @@ _fifo_check_swap(void) { cprintf("write Virt Page d in fifo_check_swap\n"); *(unsigned char *)0x4000 = 0x0d; assert(pgfault_num==9); + cprintf("write Virt Page e in fifo_check_swap\n"); + *(unsigned char *)0x5000 = 0x0e; + assert(pgfault_num==10); + cprintf("write Virt Page a in fifo_check_swap\n"); + assert(*(unsigned char *)0x1000 == 0x0a); + *(unsigned char *)0x1000 = 0x0a; + assert(pgfault_num==11); return 0; } diff --git a/labcodes_answer/lab4_result/kern/mm/vmm.c b/labcodes_answer/lab4_result/kern/mm/vmm.c index 5881a83..1c33ba2 100644 --- a/labcodes_answer/lab4_result/kern/mm/vmm.c +++ b/labcodes_answer/lab4_result/kern/mm/vmm.c @@ -420,6 +420,7 @@ do_pgfault(struct mm_struct *mm, uint32_t error_code, uintptr_t addr) { } page_insert(mm->pgdir, page, addr, perm); swap_map_swappable(mm, addr, page, 1); + page->pra_vaddr = addr; } else { cprintf("no swap_init_ok but ptep is %x, failed\n",*ptep); diff --git a/labcodes_answer/lab5_result/kern/mm/swap_fifo.c b/labcodes_answer/lab5_result/kern/mm/swap_fifo.c index ae6caf3..4f9dc8f 100644 --- a/labcodes_answer/lab5_result/kern/mm/swap_fifo.c +++ b/labcodes_answer/lab5_result/kern/mm/swap_fifo.c @@ -110,6 +110,13 @@ _fifo_check_swap(void) { cprintf("write Virt Page d in fifo_check_swap\n"); *(unsigned char *)0x4000 = 0x0d; assert(pgfault_num==9); + cprintf("write Virt Page e in fifo_check_swap\n"); + *(unsigned char *)0x5000 = 0x0e; + assert(pgfault_num==10); + cprintf("write Virt Page a in fifo_check_swap\n"); + assert(*(unsigned char *)0x1000 == 0x0a); + *(unsigned char *)0x1000 = 0x0a; + assert(pgfault_num==11); return 0; } diff --git a/labcodes_answer/lab5_result/kern/mm/vmm.c b/labcodes_answer/lab5_result/kern/mm/vmm.c index b54a8ae..e318035 100644 --- a/labcodes_answer/lab5_result/kern/mm/vmm.c +++ b/labcodes_answer/lab5_result/kern/mm/vmm.c @@ -527,6 +527,7 @@ do_pgfault(struct mm_struct *mm, uint32_t error_code, uintptr_t addr) { } page_insert(mm->pgdir, page, addr, perm); swap_map_swappable(mm, addr, page, 1); + page->pra_vaddr = addr; } ret = 0; failed: diff --git a/labcodes_answer/lab6_result/kern/mm/swap_fifo.c b/labcodes_answer/lab6_result/kern/mm/swap_fifo.c index ae6caf3..4f9dc8f 100644 --- a/labcodes_answer/lab6_result/kern/mm/swap_fifo.c +++ b/labcodes_answer/lab6_result/kern/mm/swap_fifo.c @@ -110,6 +110,13 @@ _fifo_check_swap(void) { cprintf("write Virt Page d in fifo_check_swap\n"); *(unsigned char *)0x4000 = 0x0d; assert(pgfault_num==9); + cprintf("write Virt Page e in fifo_check_swap\n"); + *(unsigned char *)0x5000 = 0x0e; + assert(pgfault_num==10); + cprintf("write Virt Page a in fifo_check_swap\n"); + assert(*(unsigned char *)0x1000 == 0x0a); + *(unsigned char *)0x1000 = 0x0a; + assert(pgfault_num==11); return 0; } diff --git a/labcodes_answer/lab6_result/kern/mm/vmm.c b/labcodes_answer/lab6_result/kern/mm/vmm.c index 877b033..ee8cc5d 100644 --- a/labcodes_answer/lab6_result/kern/mm/vmm.c +++ b/labcodes_answer/lab6_result/kern/mm/vmm.c @@ -527,6 +527,7 @@ do_pgfault(struct mm_struct *mm, uint32_t error_code, uintptr_t addr) { } page_insert(mm->pgdir, page, addr, perm); swap_map_swappable(mm, addr, page, 1); + page->pra_vaddr = addr; } ret = 0; failed: diff --git a/labcodes_answer/lab7_result/kern/mm/swap_fifo.c b/labcodes_answer/lab7_result/kern/mm/swap_fifo.c index ae6caf3..4f9dc8f 100644 --- a/labcodes_answer/lab7_result/kern/mm/swap_fifo.c +++ b/labcodes_answer/lab7_result/kern/mm/swap_fifo.c @@ -110,6 +110,13 @@ _fifo_check_swap(void) { cprintf("write Virt Page d in fifo_check_swap\n"); *(unsigned char *)0x4000 = 0x0d; assert(pgfault_num==9); + cprintf("write Virt Page e in fifo_check_swap\n"); + *(unsigned char *)0x5000 = 0x0e; + assert(pgfault_num==10); + cprintf("write Virt Page a in fifo_check_swap\n"); + assert(*(unsigned char *)0x1000 == 0x0a); + *(unsigned char *)0x1000 = 0x0a; + assert(pgfault_num==11); return 0; } diff --git a/labcodes_answer/lab7_result/kern/mm/vmm.c b/labcodes_answer/lab7_result/kern/mm/vmm.c index 04f514d..603d923 100644 --- a/labcodes_answer/lab7_result/kern/mm/vmm.c +++ b/labcodes_answer/lab7_result/kern/mm/vmm.c @@ -536,6 +536,7 @@ do_pgfault(struct mm_struct *mm, uint32_t error_code, uintptr_t addr) { } page_insert(mm->pgdir, page, addr, perm); swap_map_swappable(mm, addr, page, 1); + page->pra_vaddr = addr; } ret = 0; failed: diff --git a/labcodes_answer/lab8_result/kern/mm/swap_fifo.c b/labcodes_answer/lab8_result/kern/mm/swap_fifo.c index ae6caf3..4f9dc8f 100644 --- a/labcodes_answer/lab8_result/kern/mm/swap_fifo.c +++ b/labcodes_answer/lab8_result/kern/mm/swap_fifo.c @@ -110,6 +110,13 @@ _fifo_check_swap(void) { cprintf("write Virt Page d in fifo_check_swap\n"); *(unsigned char *)0x4000 = 0x0d; assert(pgfault_num==9); + cprintf("write Virt Page e in fifo_check_swap\n"); + *(unsigned char *)0x5000 = 0x0e; + assert(pgfault_num==10); + cprintf("write Virt Page a in fifo_check_swap\n"); + assert(*(unsigned char *)0x1000 == 0x0a); + *(unsigned char *)0x1000 = 0x0a; + assert(pgfault_num==11); return 0; } diff --git a/labcodes_answer/lab8_result/kern/mm/vmm.c b/labcodes_answer/lab8_result/kern/mm/vmm.c index 9b12b3f..bac5fa2 100644 --- a/labcodes_answer/lab8_result/kern/mm/vmm.c +++ b/labcodes_answer/lab8_result/kern/mm/vmm.c @@ -536,6 +536,7 @@ do_pgfault(struct mm_struct *mm, uint32_t error_code, uintptr_t addr) { } page_insert(mm->pgdir, page, addr, perm); swap_map_swappable(mm, addr, page, 1); + page->pra_vaddr = addr; } ret = 0; failed: