[linux-ileri] Re: Port programlama - select() yapisinin kullanimi

---------

New Message Reply About this list Date view Thread view Subject view Author view Attachment view

From: Timur Aydin (ta@taydin.org)
Date: Sat 04 Sep 2004 - 03:03:56 EEST


Murat Demirten <murat@debian.org> writes:

> Elimde ozel bir aygıt var, basitce inb() ve outb() ile belirli
> registerlari okuyup yazarak isleyen bir mekanizma kurmus durumdayim.
> Simdi bu sisteme bir kac analog input baglayip, inputlarda bir degisim
> oldugu anda uygulamadan bir fonksiyonun calismasini saglamak istiyorum.
> Port programming belgelerinde /dev/port özel aygiti üzerinden
> programlama yapmanın dezavantaji olarak select() kullanamiyor olmak

> gösteriliyor ancak ben /dev/port yontemini kullanmamama ragmen selec
t()
> yapisi ile gerektiginde uyanip ilgili degerleri portlardan nasil
> okuyacagimi da bilmiyorum. Bu konuda fikri olan var mi :)

uygulamanin inb ve outb ile portlara erisebilmesi icin, ya root
kullanicisi tarafindan calistirilmali, ya da setuid olmali. Onun
yerine, ileride bu donanima baska ozellikler de ekleme ihtimalini
dusunerek, basit bir kernel aygit surucusu gelistirmekte fayda var
bence. Uygulamanin bir thread'i, kernel'in bir ioctl'ini cagirabilir
ve kernel de bu thread'i, aygitta bir degisiklik olana kadar bloke
eder. Aygit surucu, donanim'da degisiklik algiladigi anda (mesela bir
IRQ ile), thread'i serbest birakir. Uygulama bir degisiklik oldugunun
farkina vararak, baska bir ioctl yardimiyla yeni degerleri okuyabilir.

ioctl yerine kernel surucunun read/write girisleri de
kullanilabilir. Bu durumda uygulama, read(3)/write(3) kutuphane
fonksiyonlari ile aygita erisebilir. Hatta, cat /dev/benim_aygit ile
donanimdan veri okunabilir :) Ornegin, /dev/port ve /dev/mem aygitlari
bu sekilde calisiyor.

--
Timur Aydin


New Message Reply About this list Date view Thread view Subject view Author view Attachment view

---------

Bu arsiv hypermail 2.1.2 tarafindan uretilmistir.