Pisu driver pro Linux
Martin Mares
mj na ucw.cz
Čtvrtek Září 17 09:47:45 CEST 1998
Zdravim,
> 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.
Asi nejjednodussi moznosti je pouzit semafor (viz <asm/semaphore.h>).
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
"Ctrl and Alt keys stuck -- press Del to continue."
Další informace o konferenci Linux