DeliriOS_64bits/common_code/multicore_common.c
void send_ipi(const intr_command_register *options)
{
    uint32_t *local_apic = (uint32_t *) DEFAULT_APIC_ADDR;
    //clear apic errors
    //local_apic[LAPIC_ERR_REG] = 0x0;
    const uint32_t *opts = (const uint32_t *) options;

    //Copiar opciones al mensaje que vamos a utilizar.
    //Se tiene que hacer de a 32 bits alineado a 16 bytes. Por eso el ICR
    //esta roto en dos pedazos.
    local_apic[LAPIC_ICR_DWORD1] = opts[1];
    //De acuerdo a Intel 3A 10.6.1, escribir la parte baja de este registro
    //hace que se envie la interrupcion. Lo escribimos la final por eso.
    local_apic[LAPIC_ICR_DWORD0] = opts[0];
}
//Enviar un IPI a un procesador dado su numero de local APIC. No confirma
//recepcion de la misma.
Enviar un IPI a un procesador dado su numero de local APIC. No confirma
recepcion de la misma.
Enviar un IPI a un procesador dado su numero de local APIC . No confirma recepcion de la misma .
void send_ipi(const intr_command_register *options)
{
    uint32_t *local_apic = (uint32_t *) DEFAULT_APIC_ADDR;
    const uint32_t *opts = (const uint32_t *) options;
    local_apic[LAPIC_ICR_DWORD1] = opts[1];
    local_apic[LAPIC_ICR_DWORD0] = opts[0];
}
void send_ipi ( const intr_command_register * options ) { uint32_t * local_apic = ( uint32_t * ) DEFAULT_APIC_ADDR ; const uint32_t * opts = ( const uint32_t * ) options ; local_apic [ LAPIC_ICR_DWORD1 ] = opts [ 1 ] ; local_apic [ LAPIC_ICR_DWORD0 ] = opts [ 0 ] ; }
Enviar un IPI a un procesador dado su numero de local APIC.
Enviar un IPI a un procesador dado su numero de local APIC .
//clear apic errors //local_apic[LAPIC_ERR_REG] = 0x0; //Copiar opciones al mensaje que vamos a utilizar. //Se tiene que hacer de a 32 bits alineado a 16 bytes. Por eso el ICR //esta roto en dos pedazos. //De acuerdo a Intel 3A 10.6.1, escribir la parte baja de este registro //hace que se envie la interrupcion. Lo escribimos la final por eso.