static int vblank_Expunge(struct TimerBase *base) { /* ln_Succ will ne non-empty if this Node was added to a list */ if (base->tb_VBlankInt.is_Node.ln_Succ) RemIntServer(INTB_VERTB, &base->tb_VBlankInt); return TRUE; }
static void SmallDelay(struct ExecBase *SysBase) { struct Interrupt i; i.is_Code = (APTR)AHITimerTickCode; i.is_Data = FindTask(0); i.is_Node.ln_Name = "AROS AHI Driver Timer Tick Server"; i.is_Node.ln_Pri = 0; i.is_Node.ln_Type = NT_INTERRUPT; SetSignal(0, SIGBREAKF_CTRL_F); AddIntServer(INTB_TIMERTICK, &i); Wait(SIGBREAKF_CTRL_F); RemIntServer(INTB_TIMERTICK, &i); }
void FreeDriverData( struct EMU10kxData* dd, struct DriverBase* AHIsubBase ) { if( dd != NULL ) { if( dd->card.pci_dev != NULL ) { if( dd->emu10k1_initialized ) { emu10k1_cleanup( &dd->card ); } if( dd->pci_master_enabled ) { UWORD cmd; #ifdef __AMIGAOS4__ cmd = ((struct PCIDevice * ) dd->card.pci_dev)->ReadConfigWord( PCI_COMMAND ); cmd &= ~( PCI_COMMAND_IO | PCI_COMMAND_MEMORY | PCI_COMMAND_MASTER ); ((struct PCIDevice * ) dd->card.pci_dev)->WriteConfigWord( PCI_COMMAND, cmd ); #else cmd = pci_read_config_word( PCI_COMMAND, dd->card.pci_dev ); cmd &= ~( PCI_COMMAND_IO | PCI_COMMAND_MEMORY | PCI_COMMAND_MASTER ); pci_write_config_word( PCI_COMMAND, cmd, dd->card.pci_dev ); #endif } } if( dd->interrupt_added ) { #ifdef __AMIGAOS4__ RemIntServer(((struct PCIDevice * ) dd->card.pci_dev)->MapInterrupt(), &dd->interrupt ); #else pci_rem_intserver( &dd->interrupt, dd->card.pci_dev ); #endif } FreeVec( dd ); } }
static int GM_UNIQUENAME(Expunge)(LIBBASETYPEPTR LIBBASE) { outb((inb(0x61) & 0xfd) | 1, 0x61); /* Enable the timer (set GATE on) */ RemIntServer(INTB_VERTB, &LIBBASE->tb_VBlankInt); return TRUE; }