Libertonia
Portada · Todo · Software Libre · Desarrolladores · Comunidad · Internet · Tecnología · Meta · Diarios
Ver: Modo: Orden:
gestion de interrupciones | 9 comentarios (9 temáticos, editoriales, 0 ocultos)
Ahm, no me había fijado (none / 0) (#2)
por jorginius ("jorginius" en Google Mail) a las Sun May 8th, 2005 at 11:02:58 PM CET
(Información Usuario) http://www.rodriguezmoreno.com

Que en tu ejemplo el hardware se lee desde el bottom_half. Eso chirría un poco. El hardware debería leerse desde el manejador, con las interrupciones inhabilitadas, ¿no?.

El manejador sería algo así cómo:
spin_lock(&hwlock);
leo_registro_y_lo_guardo();
spin_unlock(&hwlock);
wake_up(&hwwait); /* hale, a trabajar */


[ Padre ]


Detalle de implementacion (none / 0) (#6)
por ridiculum a las Tue May 10th, 2005 at 12:55:46 AM CET
(Información Usuario)

Si, esta hecho asi por un motivo simple: delay(). El hardware esta mapeado en memoria y claro, entre lectura y lectura debe transcurrir un tiempo impuesto por el hardware. Eso lo hago con un delay() que normalmente estan prohibidos en los manejadore de interrupcion. Es solo por eso, me facilitaba la vida. El hardware, cuando lo leo desde el bottom half esta con las interrupciones deshabilitadas, al menos las que conciernen al dispositivo.

Supongo que si se mueve el acceso al hardware al manejador, habria que leer todos los registros susceptibles de ser modificiados por una proxima irq y guardarlos en la cola, no?
Supongo que una vez que accedo al hardware, debo hacer un enable_irq()?.

Y ya que estamos, sigamos para bingo. Supongamos que he sido capaz de escribir la cola y todo (y que aparentemente funciona), ¿como se sabe a que proceso hay que darle los datos que, por ejemplo, se han recibido del dispositivo? ¿habra que guardar en algun sitio que procesos estan bloqueado en una IRQ y cual de ellas, no? ¿o se hace por dispositivo por el tema de lineas compartidas?

PD Que conste que ahora mismo el chiringuito esta funcionando y va bien, pero se que siento curiosidad por como se resuelve este problema de forma correcta.

[ Padre ]


 

gestion de interrupciones | 9 comentarios (9 temáticos, editoriales, 0 ocultos)
Ver: Modo: Orden:
Menu
· crear cuenta
· FAQ
· búsqueda
· Fuentes de Noticias

Login
Nueva cuenta
Usuario:
Contraseña:

ecol Logo Powered by Scoop
Todas las Marcas Registradas y copyrights de esta página son propiedad de sus respectivos dueños.
Los comentarios son propiedad del que los escribe.
Los iconos de las noticias y el logotipo son propiedad de Javier Malonda.
El Resto © 2002 Escomposlinux.org y aledaños.

Puedes sindicar los contenidos de libertonia en formato RSS 1.0 y RDF 0.9. También se puede sindicar la cola de envíos pendientes de moderación.

El proyecto escomposlinux.org está dedicado a la memoria de tas

crear cuenta | faq | búsqueda