- Fixed potential memory leaks and use of freed memory.
[AROS.git] / rom / exec / remintserver.c
blobdc9085e4befaf0e5c49db307d49ee15c75d8782d
1 /*
2 Copyright © 1995-2011, The AROS Development Team. All rights reserved.
3 $Id$
5 Desc: Remove an interrupt handler.
6 Lang:
7 */
9 #include <exec/execbase.h>
10 #include <exec/interrupts.h>
11 #include <hardware/intbits.h>
12 #include <proto/exec.h>
13 #include <proto/kernel.h>
14 #include <aros/libcall.h>
16 #include "exec_debug.h"
17 #include "exec_intern.h"
18 #include "chipset.h"
20 /*****************************************************************************
22 NAME */
24 AROS_LH2(void, RemIntServer,
26 /* SYNOPSIS */
27 AROS_LHA(ULONG, intNumber, D0),
28 AROS_LHA(struct Interrupt *, interrupt, A1),
30 /* LOCATION */
31 struct ExecBase *, SysBase, 29, Exec)
33 /* FUNCTION
35 INPUTS
37 RESULT
39 NOTES
41 EXAMPLE
43 BUGS
45 SEE ALSO
47 INTERNALS
49 ******************************************************************************/
51 AROS_LIBFUNC_INIT
53 ExecLog(SysBase, EXECDEBUGF_EXCEPTHANDLER, "RemIntServer: Int %d, Interrupt %p\n", intNumber, interrupt);
55 if (intNumber >= INTB_KERNEL) {
56 KrnRemIRQHandler(interrupt->is_Node.ln_Succ);
57 return;
60 Disable();
62 Remove((struct Node *)interrupt);
63 CUSTOM_DISABLE(intNumber, SysBase->IntVects[intNumber].iv_Data);
65 Enable();
67 AROS_LIBFUNC_EXIT
68 } /* RemIntServer */