/*!
 * @fn extern void CPUMON_Install_Cpuhools(void)
 *
 * @param    None
 *
 * @return   None     No return needed
 *
 * @brief  set up the interrupt handler (on a per-processor basis)
 * @brief  Initialize the APIC in two phases (current CPU, then others)
 *
 */
extern VOID 
CPUMON_Install_Cpuhooks (
    void
)
{
    S32  me = 0;
    PVOID linear;

    CONTROL_Invoke_Parallel(cpumon_Save_Cpu, (PVOID)(size_t)me);
    CONTROL_Invoke_Parallel(cpumon_Init_Cpu, (PVOID)(size_t)me);

    linear = NULL;
    APIC_Init(&linear);
    CONTROL_Invoke_Parallel(APIC_Init, &linear);
    CONTROL_Invoke_Parallel(APIC_Install_Interrupt_Handler, (PVOID)(size_t)me);

    return;
}
Example #2
0
/*!
 * @fn       VOID CONTROL_Invoke_Cpu (func, ctx, arg)
 *
 * @brief    Set up a DPC call and insert it into the queue
 *
 * @param    IN cpu_idx  - the core id to dispatch this function to
 *           IN func     - function to be invoked by the specified core(s)
 *           IN ctx      - pointer to the parameter block for each function
 *                         invocation
 *
 * @return   None
 *
 * <I>Special Notes:</I>
 *
 */
extern VOID CONTROL_Invoke_Cpu(int cpu_idx, VOID(*func) (PVOID), PVOID ctx)
{
	CONTROL_Invoke_Parallel(func, ctx);

	return;
}