From 45f7d7d348e8e72ade24fd587cac13737b951444 Mon Sep 17 00:00:00 2001 From: sir-yonno Date: Sat, 16 Jul 2022 18:37:08 +0200 Subject: [PATCH] correzione problema return in readfromterm --- src/sys_support.c | 28 ++++++++++++---------------- 1 file changed, 12 insertions(+), 16 deletions(-) diff --git a/src/sys_support.c b/src/sys_support.c index ce729c6..99d08d4 100644 --- a/src/sys_support.c +++ b/src/sys_support.c @@ -129,22 +129,18 @@ inline int read_from_terminal(unsigned int virtAddr, unsigned int asid){ // unsigned int charnstatus; unsigned int status; int i=0; - if(virtAddr>KUSEG){ - do{ - //Il return della SYSCALL ha nel primo byte lo status, e nel secondo il carattere ricevuto - charnstatus= SYSCALL(DOIO, (unsigned int)&dev_reg->recv_command,TRANSMITCHAR,0) ; - status= charnstatus & (0xFF); //maschero il return value per leggere lo status - if(status!=OKCHARTRANS) - return -status; - *((char*)virtAddr++) = charnstatus>>8; //shifto di 8 bit per trattenere soltanto il carattere letto - i++; - }while(charnstatus>>8!='\0'); //Da verificare se vogliamo prendere in input anche \0 oppure solo i caratteri effettivi (per ora per sicurezza lo faccio) - return i; - }else{ - SYSCALL(TERMINATE,0,0,0); - } - - return 42; // FIXME + if(virtAddrrecv_command,TRANSMITCHAR,0) ; + status= charnstatus & (0xFF); //maschero il return value per leggere lo status + if(status!=OKCHARTRANS) + return -status; + *((char*)virtAddr++) = charnstatus>>8; //shifto di 8 bit per trattenere soltanto il carattere letto + i++; + }while(charnstatus>>8!='\0'); //Da verificare se vogliamo prendere in input anche \0 oppure solo i caratteri effettivi (per ora per sicurezza lo faccio) + return i; }