Use cfg!() rather than #[cfg] for controlling multi_core

This commit is contained in:
bjorn3
2025-09-07 12:02:16 +02:00
parent d6e9022c4a
commit f05be85966
4 changed files with 36 additions and 34 deletions
+12 -10
View File
@@ -11,18 +11,20 @@ pub enum IpiTarget {
Other = 3,
}
#[cfg(not(feature = "multi_core"))]
#[inline(always)]
pub fn ipi(_kind: IpiKind, _target: IpiTarget) {}
pub fn ipi(_kind: IpiKind, _target: IpiTarget) {
if cfg!(not(feature = "multi_core")) {
return;
}
#[cfg(feature = "multi_core")]
#[inline(always)]
pub fn ipi(_kind: IpiKind, _target: IpiTarget) {}
// FIXME implement
}
#[cfg(not(feature = "multi_core"))]
#[inline(always)]
pub fn ipi_single(_kind: IpiKind, _target: &crate::percpu::PercpuBlock) {}
pub fn ipi_single(_kind: IpiKind, _target: &crate::percpu::PercpuBlock) {
if cfg!(not(feature = "multi_core")) {
return;
}
#[cfg(feature = "multi_core")]
#[inline(always)]
pub fn ipi_single(_kind: IpiKind, _target: &crate::percpu::PercpuBlock) {}
// FIXME implement
}
+12 -10
View File
@@ -15,18 +15,20 @@ pub enum IpiTarget {
Other = 3,
}
#[cfg(not(feature = "multi_core"))]
#[inline(always)]
pub fn ipi(_kind: IpiKind, _target: IpiTarget) {}
pub fn ipi(_kind: IpiKind, _target: IpiTarget) {
if cfg!(not(feature = "multi_core")) {
return;
}
#[cfg(feature = "multi_core")]
#[inline(always)]
pub fn ipi(_kind: IpiKind, _target: IpiTarget) {}
// FIXME implement
}
#[cfg(not(feature = "multi_core"))]
#[inline(always)]
pub fn ipi_single(_kind: IpiKind, _target: &crate::percpu::PercpuBlock) {}
pub fn ipi_single(_kind: IpiKind, _target: &crate::percpu::PercpuBlock) {
if cfg!(not(feature = "multi_core")) {
return;
}
#[cfg(feature = "multi_core")]
#[inline(always)]
pub fn ipi_single(_kind: IpiKind, _target: &crate::percpu::PercpuBlock) {}
// FIXME implement
}
+8 -10
View File
@@ -18,15 +18,14 @@ pub enum IpiTarget {
Other = 3,
}
#[cfg(not(feature = "multi_core"))]
#[inline(always)]
pub fn ipi(_kind: IpiKind, _target: IpiTarget) {}
#[cfg(feature = "multi_core")]
#[inline(always)]
pub fn ipi(kind: IpiKind, target: IpiTarget) {
use crate::device::local_apic::the_local_apic;
if cfg!(not(feature = "multi_core")) {
return;
}
#[cfg(feature = "profiling")]
if matches!(kind, IpiKind::Profile) {
let icr = (target as u64) << 18 | 1 << 14 | 0b100 << 8;
@@ -38,18 +37,17 @@ pub fn ipi(kind: IpiKind, target: IpiTarget) {
unsafe { the_local_apic().set_icr(icr) };
}
#[cfg(feature = "multi_core")]
#[inline(always)]
pub fn ipi_single(kind: IpiKind, target: &crate::percpu::PercpuBlock) {
use crate::device::local_apic::the_local_apic;
if cfg!(not(feature = "multi_core")) {
return;
}
if let Some(apic_id) = target.misc_arch_info.apic_id_opt.get() {
unsafe {
the_local_apic().ipi(apic_id, kind);
}
}
}
#[cfg(not(feature = "multi_core"))]
#[inline(always)]
pub fn ipi_single(_kind: IpiKind, _target: &crate::percpu::PercpuBlock) {}
+4 -4
View File
@@ -77,11 +77,11 @@ pub fn get_all_stats() -> Vec<(LogicalCpuId, CpuStatsData)> {
// PercpuBlock::current() is implemented somewhere in the arch-specific modules
#[cfg(not(feature = "multi_core"))]
pub fn shootdown_tlb_ipi(_target: Option<LogicalCpuId>) {}
#[cfg(feature = "multi_core")]
pub fn shootdown_tlb_ipi(target: Option<LogicalCpuId>) {
if cfg!(not(feature = "multi_core")) {
return;
}
if let Some(target) = target {
let my_percpublock = PercpuBlock::current();
assert_ne!(target, my_percpublock.cpu_id);