[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