[OSy] Nestihajici zapsani CP0 compare registru

Martin Decky decky at d3s.mff.cuni.cz
Wed Nov 3 13:44:21 CET 2010


> Mal by som mu nejak zmenit program counter na obsluznu rutinu a
> preplanovat? Pricom na konci obsluhy timera by som mal vzdy jump naspat
> na program counter, kde vlakno bolo predtym, nez som mu zacal vnucovat
> timer?

Ano, i tato (pomerne komplikovana) varianta je mozna. Ovsem mnohem 
jednodussi je vyprsene timery proste provest primo v planovaci. Uvedomte 
si, ze planovac, dokud skutecne nepreplanuje na nove vlakno, bezi porad 
v puvodnim kontextu. Tj. kdyz nekdo explicitne zavola schedule(), tak 
bezi v kontextu vlakna, ktere ho zavolalo, a pokud se schedule() zavola 
z obsluzne rutiny casovace, tak taky bezi v kontextu vlakna, ktere bylo 
preruseno.

> Pri zpracovavi v samostatnom vlakne som stale lamer v tom, ze kto na
> neho potom preplanuje, ked aj planovac pouziva timer framework.

Zrejme bude tedy potreba rozdelit Vas timer framework na dve vrstvy. 
Nizsi vrstva se bude starat ciste o naplanovani nejblizsi obsluhy, bude 
se starat o nastavovani Compare a Count registru a provadet generickou 
obsluhu hardwaroveho casovace, zatimco vyssi vrstva se bude starat o 
"uzivatelske" casovace a provadeni jejich obsluznych rutin.


M.D.




More information about the NSWI004 mailing list