Fix compile issues on non std platform
This commit is contained in:
parent
d102a755ce
commit
3726a2b14c
@ -9,7 +9,7 @@ edition = "2018"
|
|||||||
[dependencies]
|
[dependencies]
|
||||||
polling_serial = { path = "../polling_serial", optional = true }
|
polling_serial = { path = "../polling_serial", optional = true }
|
||||||
vga_buffer = { path = "../vga_buffer", optional = true }
|
vga_buffer = { path = "../vga_buffer", optional = true }
|
||||||
cpuid = { path = "../cpuid" }
|
cpuid = { path = "../cpuid", default-features = false }
|
||||||
x86_64 = "0.9.2"
|
x86_64 = "0.9.2"
|
||||||
static_assertions = "1.1.0"
|
static_assertions = "1.1.0"
|
||||||
itertools = { version = "0.9.0", default-features = false }
|
itertools = { version = "0.9.0", default-features = false }
|
||||||
@ -18,11 +18,11 @@ nix = { version = "0.17.0", optional = true }
|
|||||||
libc = { version = "0.2.69", optional = true }
|
libc = { version = "0.2.69", optional = true }
|
||||||
|
|
||||||
[features]
|
[features]
|
||||||
std = ["nix", "itertools/use_std", "libc"]
|
use_std = ["nix", "itertools/use_std", "libc", "cpuid/use_std"]
|
||||||
no_std = ["polling_serial", "vga_buffer"]
|
no_std = ["polling_serial", "vga_buffer"]
|
||||||
|
|
||||||
default = ["std"]
|
default = ["use_std"]
|
||||||
|
|
||||||
[[bin]]
|
[[bin]]
|
||||||
name = "cache_utils"
|
name = "cache_utils"
|
||||||
required-features = ["std"]
|
required-features = ["use_std"]
|
||||||
|
@ -1,11 +1,11 @@
|
|||||||
use crate::frequency::Error::{Unimplemented, UnsupportedPlatform};
|
use crate::frequency::Error::{Unimplemented, UnsupportedPlatform};
|
||||||
|
|
||||||
use crate::rdtsc_fence;
|
use crate::rdtsc_fence;
|
||||||
#[cfg(all(target_os = "linux", feature = "std"))]
|
#[cfg(all(target_os = "linux", feature = "use_std"))]
|
||||||
use libc::sched_getcpu;
|
use libc::sched_getcpu;
|
||||||
#[cfg(all(target_os = "linux", feature = "std"))]
|
#[cfg(all(target_os = "linux", feature = "use_std"))]
|
||||||
use std::convert::TryInto;
|
use std::convert::TryInto;
|
||||||
#[cfg(all(target_os = "linux", feature = "std"))]
|
#[cfg(all(target_os = "linux", feature = "use_std"))]
|
||||||
use std::os::raw::{c_uint, c_ulong};
|
use std::os::raw::{c_uint, c_ulong};
|
||||||
|
|
||||||
pub enum Error {
|
pub enum Error {
|
||||||
@ -14,13 +14,14 @@ pub enum Error {
|
|||||||
Unimplemented,
|
Unimplemented,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(all(target_os = "linux", feature = "std"))]
|
|
||||||
#[link(name = "cpupower")]
|
#[link(name = "cpupower")]
|
||||||
|
#[cfg(all(target_os = "linux", feature = "use_std"))]
|
||||||
extern "C" {
|
extern "C" {
|
||||||
//unsigned long cpufreq_get_freq_kernel(unsigned int cpu);
|
//unsigned long cpufreq_get_freq_kernel(unsigned int cpu);
|
||||||
fn cpufreq_get_freq_kernel(cpu: c_uint) -> c_ulong;
|
fn cpufreq_get_freq_kernel(cpu: c_uint) -> c_ulong;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[cfg(all(target_os = "linux", feature = "use_std"))]
|
||||||
pub fn get_freq_cpufreq_kernel() -> Result<u64, Error> {
|
pub fn get_freq_cpufreq_kernel() -> Result<u64, Error> {
|
||||||
// TODO Add memorization
|
// TODO Add memorization
|
||||||
return match unsafe { sched_getcpu() }.try_into() {
|
return match unsafe { sched_getcpu() }.try_into() {
|
||||||
@ -29,8 +30,15 @@ pub fn get_freq_cpufreq_kernel() -> Result<u64, Error> {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[cfg(not(all(target_os = "linux", feature = "use_std")))]
|
||||||
|
pub fn get_freq_cpufreq_kernel() -> Result<u64, Error> {
|
||||||
|
// TODO Add memorization
|
||||||
|
Err(UnsupportedPlatform)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
pub fn get_frequency() -> Result<u64, Error> {
|
pub fn get_frequency() -> Result<u64, Error> {
|
||||||
if cfg!(target_os = "linux") && cfg!(feature = "std") {
|
if cfg!(target_os = "linux") && cfg!(feature = "use_std") {
|
||||||
return get_freq_cpufreq_kernel();
|
return get_freq_cpufreq_kernel();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -6,8 +6,8 @@ use static_assertions::assert_cfg;
|
|||||||
|
|
||||||
assert_cfg!(
|
assert_cfg!(
|
||||||
all(
|
all(
|
||||||
not(all(feature = "std", feature = "no_std")),
|
not(all(feature = "use_std", feature = "no_std")),
|
||||||
any(feature = "std", feature = "no_std")
|
any(feature = "use_std", feature = "no_std")
|
||||||
),
|
),
|
||||||
"Choose std or no-std but not both"
|
"Choose std or no-std but not both"
|
||||||
);
|
);
|
||||||
@ -15,7 +15,7 @@ assert_cfg!(
|
|||||||
pub mod cache_info;
|
pub mod cache_info;
|
||||||
pub mod calibration;
|
pub mod calibration;
|
||||||
pub mod complex_addressing;
|
pub mod complex_addressing;
|
||||||
#[cfg(feature = "std")]
|
#[cfg(feature = "use_std")]
|
||||||
pub mod mmap;
|
pub mod mmap;
|
||||||
pub mod prefetcher;
|
pub mod prefetcher;
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#![cfg(feature = "std")]
|
#![cfg(feature = "use_std")]
|
||||||
|
|
||||||
use core::borrow::{Borrow, BorrowMut};
|
use core::borrow::{Borrow, BorrowMut};
|
||||||
use core::ffi::c_void;
|
use core::ffi::c_void;
|
||||||
|
@ -11,12 +11,10 @@ itertools = { version = "0.9.0", default-features = false }
|
|||||||
#cstr_core = {version = "0.2.0", optional = true, features = ["alloc"] }
|
#cstr_core = {version = "0.2.0", optional = true, features = ["alloc"] }
|
||||||
|
|
||||||
[features]
|
[features]
|
||||||
std = ["itertools/use_std"]
|
use_std = ["itertools/use_std"]
|
||||||
no_std = [#"cstr_core/alloc"
|
|
||||||
]
|
|
||||||
|
|
||||||
default = ["std"]
|
default = ["use_std"]
|
||||||
|
|
||||||
[[bin]]
|
[[bin]]
|
||||||
name = "cpuid"
|
name = "cpuid"
|
||||||
required-features = ["std"]
|
required-features = ["use_std"]
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#![cfg_attr(feature = "no_std", no_std)]
|
#![cfg_attr(not(feature = "use_std"), no_std)]
|
||||||
|
|
||||||
// TODO import x86 or x86_64
|
// TODO import x86 or x86_64
|
||||||
// TODO no_std
|
// TODO no_std
|
||||||
|
Loading…
Reference in New Issue
Block a user