void _SMP_Send_message( uint32_t cpu_index, unsigned long message ) { Per_CPU_Control *cpu = _Per_CPU_Get_by_index( cpu_index ); _Atomic_Fetch_or_ulong( &cpu->message, message, ATOMIC_ORDER_RELEASE ); _CPU_SMP_Send_interrupt( cpu_index ); }
void _SMP_Send_message( uint32_t cpu, uint32_t message ) { Per_CPU_Control *per_cpu = _Per_CPU_Get_by_index( cpu ); ISR_Level level; #if defined(RTEMS_DEBUG) if ( message & RTEMS_BSP_SMP_SIGNAL_TO_SELF ) printk( "Send 0x%x to %d\n", message, cpu ); #endif _Per_CPU_Lock_acquire( per_cpu, level ); per_cpu->message |= message; _Per_CPU_Lock_release( per_cpu, level ); _CPU_SMP_Send_interrupt( cpu ); }