Scrivere un comando del kernel monitor in grado di effettuare il dump del contenuto della memoria dato in ingresso un intervallo di indirizzi virtuali o fisici. Il codice che effettua il dump deve comportarsi in modo corretto quando i limiti dell'intervallo di indirizzi ricevuto in input non corrispondono ai limiti delle pagine. In tal caso la funzione deve segnalare il problema e gestirlo. ----------------------------------------------- int mon_mem(int argc, char **argv, struct Trapframe *tf) { if (argc<4) { cprintf("usage: mem [VA/PA(start)] [VA/PA(end)] P|V \n"); return -1; } char *sstartA = argv[1]; char *sendA = argv[2]; char *type = argv[3]; if (type[0]!='P'&&type[0]!='V') { cprintf("usage: mem [VA/PA(start)] [VA/PA(end)] P|V \n"); return -1; } uintptr_t startVA,endVA; if (type[0]=='P') { startVA = strtol(sstartA,NULL,16) + KERNBASE; endVA = strtol(sendA,NULL,16) + KERNBASE; } else { startVA = strtol(sstartA,NULL,16); endVA = strtol(sendA,NULL,16); } startVA = ROUNDUP(startVA,4); endVA = ROUNDUP(endVA,4); int cnt = ((endVA - startVA)>>2);; cprintf("startVA: x endVA:x cnt:%d\n",startVA,endVA,cnt); for ( int i = 0 ; i < cnt ; i++) { void ** cur_VA = (void **)startVA + i; cprintf("[x]:x\n",cur_VA,*cur_VA); } return 0; }