4 #include "routix/event.h"
6 // Puntero al inicio de la lista de eventos
7 event_t
*event_inicio
=NULL
;
9 int insertar_evento(event_t
*nuevo
)
13 if ( nuevo
== NULL
) { return 0; }
15 // Nos paramos al ppio de la lista
18 if ( event_inicio
== NULL
) { event_inicio
= nuevo
; }
22 // Buscamos la última tarea
23 for ( tmp
= event_inicio
; tmp
->proximo
!= NULL
; tmp
= tmp
->proximo
);
25 // Nos colgamos de ella
29 // La nueva tarea queda apuntando a NULL
30 nuevo
->proximo
= NULL
;
36 // Función crítica, tengo que agregarle la deshabilitación de
37 // interrupciones (bajo análisis)
38 int remover_evento(event_t
*event
)
42 // Es el primer event ?
43 if ( event
== event_inicio
) {
44 event_inicio
= event
->proximo
;
45 // Lo tengo que reemplazar por la constante correcta según la definición de errno.h
49 // Buscamos nuestro event entonces
50 for ( tmp
=event_inicio
; (tmp
->proximo
!= event
) && (tmp
!= NULL
) ; tmp
= tmp
->proximo
) ;
52 // Si no encontramos el event devolvemos error
54 // Lo tengo que reemplazar por la constante correcta según la definición de errno.h
58 tmp
->proximo
= event
->proximo
;
61 // Lo tengo que reemplazar por la constante correcta según la definición de errno.h
66 void actualizar_eventos(device_t dispositivo
)
70 // Chequeamos si hay events activos
71 if ( event_inicio
== NULL
) {
75 for ( tmp
=event_inicio
; tmp
!= NULL
; tmp
= tmp
->proximo
) {
77 //kprintf("Evento: %x - Tipo: %d\n", tmp, tmp->dispositivo);
79 if ( tmp
->dispositivo
== dispositivo
) {
81 //kprintf("Despertando a la bella durmiente: 0x%x\n", tmp->proceso);
82 despertar_task(tmp
->proceso
);