diff --git a/getPinfo.c b/getPinfo.c index 1321365..a0da594 100644 --- a/getPinfo.c +++ b/getPinfo.c @@ -4,13 +4,18 @@ // #include "proc.h" // struct pstat pstat_var; #include "types.h" -#include "defs.h" -#include "param.h" -#include "memlayout.h" +#include "stat.h" + +// #include "defs.h" #include "mmu.h" -#include "x86.h" +#include "param.h" + +// #include "memlayout.h" + +// #include "x86.h" #include "proc.h" -#include "spinlock.h" +#include "user.h" + #define NULL ((void *)0) // #include "user.h" // #include @@ -18,11 +23,31 @@ int main(int argc, char *argv[]) { - struct pstat* pstat_var = NULL; + struct pstat pstat_var; // cprintf("upar\n"); // pstat_var = (struct pstat*)malloc(sizeof(struct pstat*)); // cprintf("lower\n"); - getpinfo(pstat_var); + getpinfo(&pstat_var); + printf(1, "pid \t name \t\t state \t\t priority \t\t ticks \n"); + printf(1, "%d", pstat_var.state[1]); + for(int i=0;i<64;i++){ + if(pstat_var.inuse[i] == 1){ + if(pstat_var.state[i] == SLEEPING) + printf(1, "\n%d \t %s \t\tSLEEPING \t\t %d \t\t %d \n",pstat_var.pid[i],pstat_var.name[i], pstat_var.priority[i],pstat_var.ticks[i][pstat_var.priority[i]]); + else if(pstat_var.state[i] == RUNNING) + printf(1, "\n%d \t %s \t\tRUNNING \t\t %d \t\t %d \n",pstat_var.pid[i],pstat_var.name[i], pstat_var.priority[i],pstat_var.ticks[i][pstat_var.priority[i]]); + else if(pstat_var.state[i] == RUNNABLE) + printf(1, "\n%d \t %s \t\tRUNNABLE \t\t %d \t\t %d \n",pstat_var.pid[i],pstat_var.name[i], pstat_var.priority[i],pstat_var.ticks[i][pstat_var.priority[i]]); + else if(pstat_var.state[i] == ZOMBIE) + printf(1, "\n%d \t %s \t\tZOMBIE \t\t %d \t\t %d \n",pstat_var.pid[i],pstat_var.name[i], pstat_var.priority[i],pstat_var.ticks[i][pstat_var.priority[i]]); + //else if(pstat_var.state[i] == UNUSED) + //cprintf("%d \t %s \t\tUNUSED \t\t %d \t\t %d \n",pstat_var.pid[i],pstat_var.name[i], pstat_var.priority[i],pstat_var.ticks[i][pstat_var.priority[i]]); + else if(pstat_var.state[i] == EMBRYO) + printf(1, "\n%d \t %s \t\t EMBRYO \t\t %d \t\t %d \n",pstat_var.pid[i],pstat_var.name[i], pstat_var.priority[i],pstat_var.ticks[i][pstat_var.priority[i]]); + + } + } + exit(); } \ No newline at end of file diff --git a/proc.c b/proc.c index fa1c009..04327c0 100644 --- a/proc.c +++ b/proc.c @@ -732,7 +732,7 @@ kill(int pid) if(p->state == SLEEPING) p->state = RUNNABLE; - //pstat_var.inuse[i] = 0; + //pstat_xyz->inuse[i] = 0; release(&ptable.lock); return 0; } @@ -807,39 +807,44 @@ getpinfo(struct pstat* pstat_xyz) struct proc *proc_pstat; for(proc_pstat = ptable.proc; proc_pstat < &ptable.proc[NPROC]; proc_pstat++){ - pstat_var.inuse[i] = 1; - pstat_var.pid[i] = proc_pstat->pid; - pstat_var.priority[i] = proc_pstat->priority; - pstat_var.state[i] = proc_pstat->state; - safestrcpy(pstat_var.name[i],proc_pstat->name, sizeof(proc_pstat->name)); + if (proc_pstat->state != UNUSED) + { + pstat_xyz->inuse[i] = 1; + pstat_xyz->pid[i] = proc_pstat->pid; + pstat_xyz->priority[i] = proc_pstat->priority; + pstat_xyz->state[i] = proc_pstat->state; + safestrcpy(pstat_xyz->name[i],proc_pstat->name, sizeof(proc_pstat->name)); int j; for(j = 0; j < 4; ++j){ - pstat_var.ticks[i][j] = proc_pstat->myticks[j]; + pstat_xyz->ticks[i][j] = proc_pstat->myticks[j]; } - // cprintf("%d \t\t %d \n",pstat_var.pid[i], pstat_var.priority[i]); - + // cprintf("%d \t\t %d \n",pstat_xyz->pid[i], pstat_xyz->priority[i]); + // cprintf("\n%d \t %s \t\tSLEEPING \t\t %d \t\t %d \n",pstat_xyz->pid[i],pstat_xyz->name[i], pstat_xyz->priority[i],pstat_xyz->ticks[i][pstat_xyz->priority[i]]); + } i++; } - release(&ptable.lock); - - cprintf("pid \t name \t\t state \t\t priority \t\t ticks \n"); - for(int i=0;iinuse[i] == 1){ + // if(pstat_xyz->state[i] == SLEEPING) + // cprintf("\n%d \t %s \t\tSLEEPING \t\t %d \t\t %d \n",pstat_xyz->pid[i],pstat_xyz->name[i], pstat_xyz->priority[i],pstat_xyz->ticks[i][pstat_xyz->priority[i]]); + // else if(pstat_xyz->state[i] == RUNNING) + // cprintf("\n%d \t %s \t\tRUNNING \t\t %d \t\t %d \n",pstat_xyz->pid[i],pstat_xyz->name[i], pstat_xyz->priority[i],pstat_xyz->ticks[i][pstat_xyz->priority[i]]); + // else if(pstat_xyz->state[i] == RUNNABLE) + // cprintf("\n%d \t %s \t\tRUNNABLE \t\t %d \t\t %d \n",pstat_xyz->pid[i],pstat_xyz->name[i], pstat_xyz->priority[i],pstat_xyz->ticks[i][pstat_xyz->priority[i]]); + // else if(pstat_xyz->state[i] == ZOMBIE) + // cprintf("\n%d \t %s \t\tZOMBIE \t\t %d \t\t %d \n",pstat_xyz->pid[i],pstat_xyz->name[i], pstat_xyz->priority[i],pstat_xyz->ticks[i][pstat_xyz->priority[i]]); + // // else if(pstat_xyz->state[i] == UNUSED) + // // cprintf("%d \t %s \t\tUNUSED \t\t %d \t\t %d \n",pstat_xyz->pid[i],pstat_xyz->name[i], pstat_xyz->priority[i],pstat_xyz->ticks[i][pstat_xyz->priority[i]]); + // else if(pstat_xyz->state[i] == EMBRYO) + // cprintf("\n%d \t %s \t\t EMBRYO \t\t %d \t\t %d \n",pstat_xyz->pid[i],pstat_xyz->name[i], pstat_xyz->priority[i],pstat_xyz->ticks[i][pstat_xyz->priority[i]]); + + // } + // } - } - } + release(&ptable.lock); + return 0; } \ No newline at end of file