nanosleep()

Martin Mares mj na ucw.cz
Pondělí Září 28 21:55:59 CEST 1998


Zdravim,

> Portuji pod Linux svuj universalni programator cehokoli, je pripojeny na
> paralelni port a potrebuji cekat po presne definovany cas usek.
> Nejkratsi cas co mi staci je 
> 1ms. Koukl jsem a pouzil funkci nanosleep. Predtim jsem pomoci
> sched_setscheduler()
> nastavil prioritu na 99 na scheduler na FIFO_SCHED. Casy jako 1ms a 2ms
> sly v pohode, ale jake bylo moje prekvapeni kdyz jsem zjistil ze cas od
> 3 do 10ms trva vzdy 20ms. Netusite nekdo cim to je ?

   Problem je v tom, ze pro real-timove procesy (to jest ty, ktere maji
scheduling type jiny nez SCHED_OTHER), se intervaly do 2ms resi busy-loopem
a ty vetsi nez 2ms (pripadne vsechny pro SCHED_OTHER) pomoci timeru, ktery
na PC tika jednou za 10ms. Rozumnym resenim je v pripade, ze je zapotrebi
presneho casovani, opakovat cekani na 2ms. Odporne, ale asi jedine mozne :((

				Have a nice fortnight
-- 
Martin `MJ' Mares   <mj na ucw.cz>   http://atrey.karlin.mff.cuni.cz/~mj/
Faculty of Math and Physics, Charles University, Prague, Czech Rep., Earth
"Black holes are where God divided by zero."


Další informace o konferenci Linux