1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
32 33 34 35
36
37 /*!
38 * ======== IInterrupt ========
39 * Interface for the inter-processor interrupts
40 */
41 interface IInterrupt {
42
43 struct IntInfo {
44 UInt localIntId;
45 UInt remoteIntId;
46 UInt intVectorId;
47 }
48
49 /*!
50 * ======== intEnable ========
51 * Enables the interrupt corresponding to intId
52 *
53 * @param(remoteProcId) Remote MultiProc Id
54 * @param(intInfo) Information needed to configure interrupt line
55 */
56 Void intEnable(UInt16 remoteProcId, IntInfo *intInfo);
57
58 /*!
59 * ======== intDisable ========
60 * Disables the interrupt corresponding to intId
61 *
62 * @param(remoteProcId) Remote MultiProc Id
63 * @param(intInfo) Information needed to configure interrupt line
64 */
65 Void intDisable(UInt16 remoteProcId, IntInfo *intInfo);
66
67 /*!
68 * ======== intRegister ========
69 * Register an interrupt line to a remote processor
70 *
71 * @param(remoteProcId) Remote MultiProc Id
72 * @param(intInfo) Information needed to configure interrupt line
73 * @param(func) Function to register.
74 * @param(arg) Argument that will be passed to func
75 */
76 Void intRegister(UInt16 remoteProcId, IntInfo *intInfo, Fxn func, UArg arg);
77
78 /*!
79 * ======== intUnregister ========
80 * Unregister an interrupt line to a remote processor
81 *
82 * @param(remoteProcId) Remote MultiProc Id
83 * @param(intInfo) Information needed to configure interrupt line
84 */
85 Void intUnregister(UInt16 remoteProcId, IntInfo *intInfo);
86
87 /*!
88 * ======== intSend ========
89 * Send interrupt to the remote processor
90 *
91 * @param(remoteProcId) Remote MultiProc Id
92 * @param(intInfo) Information needed to configure interrupt line
93 * @param(arg) Argument for sending interrupt.
94 */
95 Void intSend(UInt16 remoteProcId, IntInfo *intInfo, UArg arg);
96
97 /*!
98 * @_nodoc
99 * Post an interrupt locally.
100 *
101 * Used to simulate receiving an interrupt from a remote (source)
102 * processor
103 *
104 * @param(remoteProcId) Source MultiProc Id
105 * @param(intInfo) Information needed to configure interrupt line
106 * @param(arg) Argument for sending interrupt.
107 */
108 Void intPost(UInt16 srcProcId, IntInfo *intInfo, UArg arg);
109
110 /*!
111 * ======== intClear ========
112 * Clear interrupt
113 *
114 * @param(remoteProcId) Remote MultiProc Id
115 * @param(intInfo) Information needed to configure interrupt line
116 *
117 * @b(returns) Value (if any) of the interrupt before
118 * it was cleared
119 */
120 UInt intClear(UInt16 remoteProcId, IntInfo *intInfo);
121 }
122 123 124
125