From 12f5f1d5caca8223b6dcadddae7ab8605fed1d0d Mon Sep 17 00:00:00 2001 From: Bah Thierno-Souleymane <thiernosouleymane.bah.etu@univ-lille.fr> Date: Wed, 3 Mar 2021 02:17:55 +0100 Subject: [PATCH] fix(mi_kernel.c file updated, swap disk functions deleted) --- .DS_Store | Bin 8196 -> 0 bytes Makefile | 2 +- mi_kernel.c | 74 +--------------------------------------------------- swap.c | 43 ------------------------------ swap.h | 10 ------- 5 files changed, 2 insertions(+), 127 deletions(-) delete mode 100644 .DS_Store delete mode 100644 swap.c delete mode 100644 swap.h diff --git a/.DS_Store b/.DS_Store deleted file mode 100644 index 5285db6ab1e23e070ee5d16891fbd9f9ad6949b0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8196 zcmZQzU|@7AO)+F(kYHe7;9!8z0^AH(0Z1N%F(jFwA|fF37#IW?7;+dA87dj#8HyQ7 zpmL+sXb6mkz-S1JhQMeDjE2DA3IRrlb2xC+`w-btax?@+LtsRP0H}OWfVAxy9H4Xq zga%15FfuTJy8w&~3@oq!Vg&aC7(j9$tsokt6-0xyGBAQzU^Bp485p5j8NuBUkUjyh zQH%^=?F@`yn?d4W?F@`yn;94wA=()jp*Ax@dnk+$?F@_%?F@`y+rdVT5~Cq78Ukn` z0P4H*Go&zNG88iup!DAp8Il>Y8T1&EJ#+GtlXCKt7$8~Ok%56h^*<PZ&EjFmU`S*r zVn|^q2h*txdJLHic?_9o`qrcA<6!V*NMy)nNM%T4$YjW2NJUl8D2t|^n<1AWlOZ0g zqlh7oA(bHq({+s9MCr;vv+F0CE*_{|#SE1U#SF;|i3~Yl+tBnerK9QNgz770C}v1y zD8h6f11R*G!GZT59D0~K(ClCUg&VRCZU$clUxrWyXNG)+JaE{hGw3m(=>mryvMye% zy0F9(I0TV(axoNu<1?M10Bj@3HncRs2ns)BJ$x8?3K$X@@))q_1&1NBUQUJ}23H10 z1{Vfj23H0>hFpde)Yt-t;X|Y_WMwE}C}OC@3~g{IU{{GAUZ8Y?tdbLIW;{bKLn%1! z(fkaK7i1l53>6F(3}y_v3}y@_s4fPF4^Fj7<;4Zi{B<&^ASbi9#K7P>BNH<VD;qlp zCnpCdFK29UMt*s4Nn%N9u~TAEG>8|FSdx(hWryVF=fK&CNnx3(<?#X{&iQ#IiJ5t+ zMIhzDnJKABiA6EtnRzMs<xcsfc`3zUbD$Dni{b?&s;iAnEOiu&4J~VR6sj$a40IGs zjLm9mIXT2t4Q)LWax1H<YijFef)g*iHfG?5@Zsbv1_lO{0Le@)gL;y23e1!D;GX2- z=Hcbz7ZBtZ;ujVc5fu}c5RVrSPD)J9PA>vE)j2;WzsM=4G&MTCC^IFvATc>JFFm3p zwW1_Avnn-SKnP7~P-;pXLMWuNAT?e<1R(%6&b=r#H4ki_e_C2`YDokVJ2Iv?Bfs3U zBsJGFFD*Y_K&UJ;wcNj;Br`v+I4rfOI5R&lGO?&AF)uyUsWLVvF)202KhG(@q$EE# zA~QKZ58^6*up!C$c>zVKAOn=`KR^OV*})se(10)m7?dFl1_lmLkqqO2XvUDd{Jd07 zWd{!skAZ=cfrCMn!J5IHA%G#3p@gBEVLHQNh7Aly8O}4@Wq8K$gOQPui&2<Slu?dR zp3#8Ol+ldQ9-@^A+InJ;g79G^xRrzwUuD5Xc{%xcpaKr22c~$G9ws5c4Dp8qsQ>TE zz<_J~AEIiM91Vfd5Ezyrz{uhf?BWFOlw<cFsILv`PbWa7K{W!XJI)B|mqYY{lz_VS s;O;mhWKt2Vnvnt0lV@ar^yC>C7(iMFZXlpEFJ-j;AFcnviE{)K0CZjLnE(I) diff --git a/Makefile b/Makefile index e28cf0d..9512dba 100644 --- a/Makefile +++ b/Makefile @@ -15,7 +15,7 @@ pingpong : try.o pingpong.o pingpongpang : try.o pingpongpang.o gcc -o $@ $^ $(LIB) -mi_kernel : swap.o mi_user.o mi_kernel.o +mi_kernel : mi_user.o mi_kernel.o gcc -o $@ $^ $(LIB) %.o:%.c diff --git a/mi_kernel.c b/mi_kernel.c index b8fdabc..50a4b45 100644 --- a/mi_kernel.c +++ b/mi_kernel.c @@ -1,18 +1,13 @@ #include <stdlib.h> #include <stdio.h> #include <string.h> - #include "hardware.h" #include "mi_kernel.h" #include "mi_user.h" #include "MMUConfig.h" #include "mi_syscall.h" -#include "swap.h" -int VM_MAPPING[VM_SIZE]; -int PM_MAPPING[PM_SIZE]; int current_process = 0; -int first_pm_free = 0; void mmu_handler() { @@ -37,73 +32,6 @@ void mmu_handler() //_out(TLB_ADD_ENTRY, *(int *)(&tlb)); } -int simple_swap_mmu_handler() -{ - tlb_entry_t tlb; - int ppage = 1; - long int vaddr = ((long int)_in(MMU_FAULT_ADDR_HI) << 32) | (_in(MMU_FAULT_ADDR_LO) & 0xFFFFFFFF); - long int vpage = (vaddr >> 12) & 0xFFF; - - if (vaddr < ((long int)virtual_memory) || vaddr > ((long int)virtual_memory) + VM_SIZE) - { - fprintf(stderr, "Adresse virtuelle incorrecte"); - exit(EXIT_FAILURE); - } - - // Sauvegarder la vpage dans le fichier swap - store_to_swap(vpage, ppage); - - // Vider la MMU - _out(MMU_CMD, MMU_RESET); - - // Rajouter l'entree dans la tlb - tlb.s.tlb_vpage = vpage; - tlb.s.tlb_ppage = ppage; - tlb.s.tlb_rwx = 7; - tlb.s.tlb_used = 1; - - _out(TLB_ADD_ENTRY, tlb.i); -} - -int swap_mmu_handler() -{ - tlb_entry_t tlb; - long int vaddr = ((long int)_in(MMU_FAULT_ADDR_HI) << 32) | (_in(MMU_FAULT_ADDR_LO) & 0xFFFFFFFF); - long int vpage = (vaddr >> 12) & 0xFFF; - - if (vaddr < ((long int)virtual_memory) || vaddr > ((long int)virtual_memory) + VM_SIZE) - { - fprintf(stderr, "Adresse virtuelle incorrecte"); - exit(EXIT_FAILURE); - } - - // Liaison de la vpage à la ppage - if (VM_MAPPING[vpage] == NULL) - VM_MAPPING[vpage] = (first_pm_free % PM_SIZE) + 1; - - int ppage = VM_MAPPING[vpage]; - int old_vpage = PM_MAPPING[ppage]; - - if (old_vpage == NULL) - { - PM_MAPPING[ppage] = vpage; - first_pm_free++; - } - else if (old_vpage != vpage) - { - store_to_swap(old_vpage, ppage); - fetch_from_swap(vpage, ppage); - } - - // Rajouter l'entree dans la tlb - tlb.s.tlb_vpage = vpage; - tlb.s.tlb_ppage = ppage; - tlb.s.tlb_rwx = 7; - tlb.s.tlb_used = 1; - - _out(TLB_ADD_ENTRY, tlb.i); -} - void switch_to_process0(void) { current_process = 0; @@ -154,4 +82,4 @@ int main(int argc, char **argv) main_master(); _mask(0x1001); // Basculer mode utilisateur main_user(); -} +} \ No newline at end of file diff --git a/swap.c b/swap.c deleted file mode 100644 index a70afd0..0000000 --- a/swap.c +++ /dev/null @@ -1,43 +0,0 @@ -/* functions return non null value on error */ - -#include <stdio.h> -#include <stdint.h> - -#include "hardware.h" -#include "hw_config.h" -#include "swap.h" - -static FILE *swap_file = NULL; - -static int -init_swap(void) -{ - swap_file = fopen(".swap_file", "w+"); /* w+: create, read, write*/ - return swap_file == NULL; -} - -int store_to_swap(int vpage, int ppage) -{ - if (swap_file == NULL) - if (init_swap()) - return -2; - if (fseek(swap_file, vpage << 12, SEEK_SET) == -1) - return -1; - if (fwrite((void *)((ppage << 12) | (uintptr_t)physical_memory), - 1, PAGE_SIZE, swap_file) == 0) - return -1; - return 0; -} - -int fetch_from_swap(int vpage, int ppage) -{ - if (swap_file == NULL) - if (init_swap()) - return -2; - if (fseek(swap_file, vpage << 12, SEEK_SET) == -1) - return -1; - if (fread((void *)((ppage << 12) | (uintptr_t)physical_memory), - 1, PAGE_SIZE, swap_file) == 0) - return -1; - return 0; -} diff --git a/swap.h b/swap.h deleted file mode 100644 index ecaf286..0000000 --- a/swap.h +++ /dev/null @@ -1,10 +0,0 @@ -#if !defined(SWAP) -#define SWAP - -#define PAGE_SIZE 4000 - -int store_to_swap(int vpage, int ppage); - -int fetch_from_swap(int vpage, int ppage); - -#endif // SWAP -- GitLab