void printprocstks()
{
 struct procent *p;
 
 create(myProgA(1,2), 1024, 20, "Process1", 2);
 create(myfuncA('d'), 1024, 20, "Process2", 1);

 
 int i;
 pid32 pid;

 for(i = 0; i < NPROC; i++)
 {
  if(((p = &proctab[i])->prstate)!=PR_FREE)
  {
   kprintf("Proc[%s].Pid = %d\n", p->prname,i);
   kprintf("Stack: Base = %x\n\t", p->prstkbase);
   kprintf("Len = %x\n\t", p->prstklen);
   kprintf("Limit = %x\n\t",(p->prstkbase-p->prstklen));

   if(((p=&proctab[i])->prstate)!=PR_CURR)
   {
    kprintf("StkPtr = %x\n", p->prstkptr);
    }
    else
    {
     register int sp asm("sp");
     kprintf("StkPtr = %x\n", sp);
     }
     }
     }
Exemplo n.º 2
0
void myprogA()
{
	kprintf("\r\nmyprogA\r\n");
	kprintf("Run-Time Stack Address: %x\r\n", &proctab[currpid].prstkptr);
	int x;
	for(x=1;x<10000;x++){
		x = x+0;
	}
	x = myfuncA(1, 2);
}
Exemplo n.º 3
0
int myprogA(){
    kprintf("\n\nmyprogA\n");
    register int *esp asm("sp");
    kprintf("Runtime stack inside myprogA.\n");
    kprintf("Runtime stack [address]=data.\n");
    int j = -12;
    for(;j < 13; j++){
	kprintf("%02d: [0x%08x]=0x%08x\n",j ,(esp+j), *(esp+j));
    }
    myfuncA('c');
    return 0;
}
Exemplo n.º 4
0
int myappA(int x, int main_pid){
    unsigned long * topsp;
    int res;
    struct procent * proc = &proctab[main_pid];

    kprintf("\ncurrpid : %d\n", currpid);
    kprintf("\n main's pid : %d\n", main_pid);
    kprintf("\n main's esp(prstkptr) : 0x%x\n", (unsigned long *)proc->prstkptr);

    asm("movl %esp, esp");
    topsp = esp;
    kprintf("\nBefore myfuncA is called\n");
    kprintf("run-time stack top : address = 0x%x, content = 0x%x\n", topsp, (unsigned long *) *topsp);

    res = myfuncA(x);

    asm("movl %esp, esp");
    topsp = esp;
    kprintf("\nAfter myfuncA has returned\n");
    kprintf("run-time stack top : address = 0x%x, content = 0x%x\n", topsp, (unsigned long *) *topsp);
    
    return res;
}