Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Interrupciones y Excepciones
Agenda
Conceptos generales
Interrupciones
Excepciones
Manejadores de interrupciones
Manejador de excepciones
Bottom Halves
Softirqs
Tasklets
Work Queues
TSO Interrupciones 2012
Conceptos generales
Interrupciones
Interrupciones
Interrupciones
Excepciones
Excepciones
Fallos
Pueden ser corregidos y retoman la ejecucin. Se retoma la
instruccin que gener el fallo
Traps
Aborts
Programadas
Excepciones
Task gate
Manejadores de interrupciones
int request_irq (
unsigned int irq,
irq_handler_t handler,
unsigned long irqflags,
// IRQF_DISABLED, IRQF_SAMPLE_RANDOM, IRQF_TIMER,
// IRQF_SHARED
Manejadores de interrupciones
Manejadores de interrupciones
status |= action->flags;
retval |= action->handler(irq, action->dev_id);
action = action->next;
} while (action);
if (status & IRQF_SAMPLE_RANDOM)
add_interrupt_randomness(irq);
local_irq_disable();
return retval;
}
TSO Interrupciones 2012
Habilitacin de interrupciones
local_irq_enable()
/* sti */
Interrupciones anidadas
Las interrupciones no tiene una jerarqua
Cuando surgen deben ser atendida en forma inmediata
Es posible que se aniden:
Bottom Halves
Bottom Halves
Softirqs
Tasklets
Work queues
Softirqs
HI_SOFTIRQ (prioridad 0)
TIMER_SOFTIRQ (prioridad 1)
NET_TX_SOFTIRQ (prioridad 2)
NET_RX_SOFTIRQ (prioridad 3)
BLOCK_SOFTIRQ (prioridad 4)
TASKLET_SOFTIRQ (prioridad 5)
SCHED_SOFTIRQ (prioridad 6)
Ejecucin de softirqs
Ejecucin de softirqs
En otras partes del cdigo del ncleo que verifica si existen softirq
pendientes (ej. subsistema de red)
Ejecucin de softirqs
Tasklets
tasklet_struct {
Planificacin de Tasklets
Ejecucin de Tasklets
Work Queues
reiserfs
xfslogd, xfsdatad
TSO Interrupciones 2012
Work Queues
create_workqueue
destroy_workqueue
Destruye la workqueue
queue_work
alloc_workqueue