Page 1 of 1

k_printf causes a page fault

Posted: Sun Nov 20, 2005 12:00 am
by earlz
I have a bug free k_printf working and it works everywhere except for when i decide to put it in my getkey code
I have debugged my keyboard isr but i just can't seem to get the getkey to stay in a loop until you input a key
here is my problem code

Code: Select all


sasc getkey(void){
	sasc ret_key;
	for(;;){ //loop until..
            if ((volatile)keycount!=0){k_printf("break");break;} //there is a key in the buffer, printf causes page fault
			key_back(); //this is to do stuff in background when waiting for key
		
	}

	keycount--;
	ret_key.scan=keys[keycount];
	keycount--;
	ret_key.asc=keys[keycount];
	

	
	return ret_key;
}

Re: k_printf causes a page fault

Posted: Mon Nov 21, 2005 12:00 am
by blackcatcoder
hmm...

try to debug the ss and esp register !

Which scheduleing do you use (tss or software)
Are you handling dpls ?

Can the isr be called from user code ? (RING 3)
If it is a ring3 interrupt check the rights of the task
and set the register correct before you do anything

Re: k_printf causes a page fault

Posted: Mon Nov 21, 2005 12:00 am
by earlz
how would you go about debugging the esp register(ss stays constant currently)
i dont have anything besides ring3 and no secheduling, im still trying to get the keyboard driver working.

Re: k_printf causes a page fault

Posted: Tue Nov 22, 2005 12:00 am
by blackcatcoder
can you post the isr with the asm code if there is one?

if there is a mem address in esp beyond a page marked useable then you get a page fault!