Pisu driver pro Linux

Michal Kral Michal.Kral na csob.iqnet.cz
Středa Září 16 15:30:30 CEST 1998


Hola ,

pisu driver pro jednu I/O kartu ( 16 analog in  , 1 analog out , 16  digital in , 16 digital out ) .

Potrebuju , aby bylo mozny cist z device v jednom okamziku nekolika procesy.
Protoze ale napr. cteni analogovejch vstupu je realizovano nekolika kroky ( nastaveni rozsahu cteni
,
start cteni, cekani na interrupt ... ) je nutny zajistit driver proti kolizim pri pozadavku nekolika

procesu najednou.
Moje idea byla , ze prvni pozadavek se zacne provadet a dalsi se budou skladat do fronty
(proces zapise svoji 'task_struct' do fronty a uspi se ). Pri vyrizeni prvniho pozadavku se
rozbehne nasledujici proces a az ten skonci rozbehne ten za nim atd atd ... az se fronta
vyprazdni.

Bohuzel , pokud jsem problem spravne pochopil , ty klasicky Linuxovy rutiny
'sleep_on() / wake_up()' nejsou pro reseni tohoto problemu moc vhodny .
Pracuji sice se strukturou 'wait_queue' ale tato neni ve skutecnosti vlastne zadna fronta .
Pri volani wake_up() se rozbehnou VSECHNY procesy ve fronte !!!
Ja potrebuju vzdycky jen jeden.

Nakonec jsem to vyresil napsanim vlastni cekaci fronty , ktera se uz
se chova tak jak potrebuju.

Myslim si ale , ze tento problem je tak banalni , ze pro nej Linux musi
mit uz nejake hotove reseni - rozhodne nejsem prvni kdo toto resi.


Mate mi k tomu nekdo co rici ???

Dik

Michal Kral















Další informace o konferenci Linux