Esempio n. 1
0
int set_isr(int irq, void (*isr)(void), 
			    _go32_dpmi_seginfo *prev_isr)
{ 
	int vector = irq_vector(irq);
	if(_go32_dpmi_get_protected_mode_interrupt_vector(vector, prev_isr)) return -1;
		_go32_dpmi_seginfo new_isr;
		new_isr.pm_selector = _go32_my_cs( );
		new_isr.pm_offset=(unsigned long) isr;
	if(_go32_dpmi_set_protected_mode_interrupt_vector(vector, &new_isr)) return -1;
	return 0;
}	
Esempio n. 2
0
int set_isr_c_wrapper(int irq, void (*isr)(void), _go32_dpmi_seginfo *prev_isr) {

    int vector = irq_vector(irq);
    if(_go32_dpmi_get_protected_mode_interrupt_vector(vector, prev_isr))
        return -1;

    _go32_dpmi_seginfo new_isr;
    new_isr.pm_selector = _go32_my_cs();
    new_isr.pm_offset=(unsigned long) isr;

    /* prepara função assembly para chamar função C */
    _go32_dpmi_allocate_iret_wrapper(&new_isr);

    if(_go32_dpmi_set_protected_mode_interrupt_vector(vector, &new_isr))
        return -1;

    return 0;
}
Esempio n. 3
0
void restore_isr_c_wrapper(int irq, _go32_dpmi_seginfo *isr) {
    int vector = irq_vector(irq);
    _go32_dpmi_set_protected_mode_interrupt_vector(vector, isr);
}