[OSy] Nestihajici zapsani CP0 compare registru
Martin Decky
decky at d3s.mff.cuni.cz
Wed Nov 3 13:52:03 CET 2010
> Mam timer, ktory si pusta priamo scheduler, takze raz cas sa aktivuje
> funkcia 'schedule' volana ako handler nejakej struct timer:
> schedule_init () {
>
> timer_init(&tmr[cpuid()], 2000,&schedule_on_timer, ...)
> timer_start(&tmr[cpuid()]);
> }
Zrejme tedy myslenka, ze planovac je obsluzna rutina generickeho timeru,
nebude uplne nejstastnejsi ..
Mozna uz jen proto, ze obecne timery maji jednorazovou povahu, zatimco
preemptivni planovac je urcite spise periodicka zalezitost. Viz muj
predchozi email -- snaha o jednotne API by nemela znamenat, ze se
nasilne unifikuji i veci, ktere by bylo vyhodnejsi resit na ruznych
urovnich abstrakce.
> Otazka je, maju sa spracovavat handlery timerov so zakazanym
> interruptom?
Na to se neda uplne obecne odpovedet, to zavisi na mnoha jinych
rozhodnutich v navrhu Vaseho kernelu. Kde a jak presne handlery timeru
bezi, zda je Vas kernel obecne preemptivni (tj. podporuje vnorene
vyjimky) apod.
> Myslim ze som to dokazal kodom vyssie, nejaka rozumna konstanta tam asi
> vzdy bude musiet byt, lebo samotne write_cp0_compare a read_cp0_count
> nieco trvaju, tak aby som tam zapisal nieco urcite vacsie, ako pocet
> tickov ktore trva kym sa vykonaju tieto instrukcie.
Jiste, nema smysl, aby se timer exception vyvolal okamzite pote, co
nastavite Compare a Count. Na to nepotrebujete zadny exception, v
takovem pripade je lepsi zavolat obsluzny kod primo :)
M.D.
More information about the NSWI004
mailing list