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