From 9f59fe2bb3c342fc83dc8272a73b1f5654709041 Mon Sep 17 00:00:00 2001
From: unknown <abinade2@illinois.edu>
Date: Sat, 28 Apr 2018 22:18:58 -0500
Subject: [PATCH] grep now works

---
 student-distrib/rtc.c     |  9 +++++++++
 student-distrib/syscall.c | 42 +++++++++++++++++++--------------------
 2 files changed, 30 insertions(+), 21 deletions(-)

diff --git a/student-distrib/rtc.c b/student-distrib/rtc.c
index 9e92193..964ed89 100644
--- a/student-distrib/rtc.c
+++ b/student-distrib/rtc.c
@@ -86,8 +86,10 @@ int32_t rtc_read(int32_t fd, void* buf, int32_t nbytes)
 
     //interrupt_flag = 1;
     sti();
+
     /* Wait until interrupt handler clears flag */
     while (rtc_flag[running_terminal]);
+
     cli();
 
     return 0;
@@ -176,8 +178,15 @@ int32_t rtc_write(int32_t fd, const void* buf, int32_t nbytes)
  */
 int32_t rtc_open(const uint8_t* filename)
 {
+    int32_t freq = 2;
+
     /* Set RTC to active for the running terminal */
     rtc_active[running_terminal] = 1;
+
+    rtc_counter[running_terminal] = INIT_FREQ/freq;
+
+    rtc_init_counter[running_terminal] = rtc_counter[running_terminal];
+
     return 0;
 
 
diff --git a/student-distrib/syscall.c b/student-distrib/syscall.c
index 82e01b0..b5085cc 100644
--- a/student-distrib/syscall.c
+++ b/student-distrib/syscall.c
@@ -206,9 +206,9 @@ int32_t  execute(const uint8_t* command){
 
         terminal[running_terminal].pcb = pcb_ptr;
 
-        //printf("[EXE] using pcb = %x\n", terminal[visible_terminal].pcb);
+        //printf("[EXE] using pcb = %x\n", terminal[running_terminal].pcb);
 
-        //printf("[EXE] set pcb ebp to %x , esp to %x\n", terminal[visible_terminal].pcb->current_ebp, terminal[visible_terminal].pcb->current_esp);
+        //printf("[EXE] set pcb ebp to %x , esp to %x\n", terminal[running_terminal].pcb->current_ebp, terminal[running_terminal].pcb->current_esp);
         //printf("[EXE] should be ebp %x , esp %x\n", temp_ebp, temp_esp);
     //--------------------- 6: scheduling initilization -----------------------
 
@@ -271,7 +271,7 @@ int32_t read (int32_t fd_n, void* buf, int32_t nbytes){
 
     if (nbytes < 0) return -1; // invalid nbytes
 
-    //terminal[visible_terminal].pcb = current_pcb();
+    //terminal[running_terminal].pcb = current_pcb();
 
     /* Enable for keyboard interrupts */
     //sti();
@@ -338,7 +338,7 @@ int32_t open (const uint8_t* filename){
     int type;
     dentry_t dentry;
 
-     terminal[ visible_terminal].pcb = current_pcb();
+    //terminal[ running_terminal].pcb = current_pcb();
 
     /* Valid file name check */
     if( strlen( (char*)filename ) == 0 ) return -1;
@@ -354,7 +354,7 @@ int32_t open (const uint8_t* filename){
     for(i = USER_FILE_START; i < MAX_FILE_NUM; i++){
 
         /* Check if FD table entry is unused */
-        if( terminal[ visible_terminal].pcb->fd[i].flags == 0)
+        if( terminal[ running_terminal].pcb->fd[i].flags == 0)
         {
             fd = i;
             break;
@@ -365,25 +365,25 @@ int32_t open (const uint8_t* filename){
 
     }
 
-     terminal[ visible_terminal].pcb->fd[fd].inode_index = (type == 2)? dentry.inode_index  : 0;
-     terminal[ visible_terminal].pcb->fd[fd].file_pos    = 0;
-     terminal[ visible_terminal].pcb->fd[fd].flags       = 1;
+     terminal[ running_terminal].pcb->fd[fd].inode_index = (type == 2)? dentry.inode_index  : 0;
+     terminal[ running_terminal].pcb->fd[fd].file_pos    = 0;
+     terminal[ running_terminal].pcb->fd[fd].flags       = 1;
 
     switch (type) {
     case 0:
-         terminal[ visible_terminal].pcb->fd[fd].fileop_ptr  = rtc_jumptable;
+         terminal[ running_terminal].pcb->fd[fd].fileop_ptr  = rtc_jumptable;
         break;
     case 1:
-         terminal[ visible_terminal].pcb->fd[fd].fileop_ptr  = dir_jumptable;
+         terminal[ running_terminal].pcb->fd[fd].fileop_ptr  = dir_jumptable;
         break;
     case 2:
-         terminal[ visible_terminal].pcb->fd[fd].fileop_ptr  = file_jumptable;
+         terminal[ running_terminal].pcb->fd[fd].fileop_ptr  = file_jumptable;
         break;
     }
 
-    sti();
+    //sti();
 
-     terminal[ visible_terminal].pcb->fd[fd].fileop_ptr.open(filename);
+     terminal[running_terminal].pcb->fd[fd].fileop_ptr.open(filename);
 
     return fd;
 }
@@ -402,11 +402,11 @@ int32_t close (int32_t fd){
 
     if (fd_check(fd) < 0 || fd < USER_FILE_START) return -1; // invalid fd
 
-     terminal[ visible_terminal].pcb = current_pcb();
+     //terminal[ running_terminal].pcb = current_pcb();
 
-    sti();
+    //sti();
 
-     terminal[ visible_terminal].pcb->fd[fd].fileop_ptr.close(fd);
+     terminal[ running_terminal].pcb->fd[fd].fileop_ptr.close(fd);
         
     fd_clear(fd);
     
@@ -433,10 +433,10 @@ int32_t getargs (uint8_t* buf, int32_t nbytes){
 
     uint8_t* argument;
 
-     terminal[ visible_terminal].pcb = current_pcb();
-    argument = (uint8_t*) ( terminal[ visible_terminal].pcb->argv);
+     //terminal[ running_terminal].pcb = current_pcb();
+    argument = (uint8_t*) ( terminal[ running_terminal].pcb->argv);
 
-    if(  terminal[ visible_terminal].pcb->arg_num == 0 || nbytes <= 0 )
+    if(  terminal[ running_terminal].pcb->arg_num == 0 || nbytes <= 0 )
     {
         //printf("[getargs] return -1\n");
         return -1; //If there are no arguments
@@ -448,8 +448,8 @@ int32_t getargs (uint8_t* buf, int32_t nbytes){
     memcpy(buf, argument, nbytes);
 
     // uint32_t i;
-    // //printf("[getargs] argument number = %d\n",  terminal[ visible_terminal].pcb->arg_num);
-    // for(i = 0; i <  terminal[ visible_terminal].pcb->arg_num; i++)
+    // //printf("[getargs] argument number = %d\n",  terminal[ running_terminal].pcb->arg_num);
+    // for(i = 0; i <  terminal[ running_terminal].pcb->arg_num; i++)
     //     //printf("[getargs] buf[%d] = %s\n", i, buf+i*MAX_ARGUMENT_SIZE);
     //printf("[getargs] return 0\n");
     return 0;
-- 
GitLab