Skip to content

Commit 22693ba

Browse files
pierre-rouanetphil-opp
authored andcommitted
Make the spin::Mutex optional. (#8)
1 parent 65d5ba4 commit 22693ba

File tree

2 files changed

+13
-1
lines changed

2 files changed

+13
-1
lines changed

Cargo.toml

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,5 +11,10 @@ repository = "https://github.com/phil-opp/linked-list-allocator"
1111
documentation = "https://docs.rs/crate/linked_list_allocator"
1212
homepage = "http://os.phil-opp.com/kernel-heap.html#a-better-allocator"
1313

14-
[dependencies]
14+
[features]
15+
default = ["use_spin"]
16+
use_spin = ["spin"]
17+
18+
[dependencies.spin]
1519
spin = "0.4.5"
20+
optional = true

src/lib.rs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,15 @@ extern crate alloc;
99
#[macro_use]
1010
extern crate std;
1111

12+
#[cfg(feature = "use_spin")]
1213
extern crate spin;
1314

1415
use hole::{Hole, HoleList};
1516
use core::mem;
17+
#[cfg(feature = "use_spin")]
1618
use core::ops::Deref;
1719
use alloc::allocator::{Alloc, Layout, AllocErr};
20+
#[cfg(feature = "use_spin")]
1821
use spin::Mutex;
1922

2023
mod hole;
@@ -138,8 +141,10 @@ unsafe impl Alloc for Heap {
138141
}
139142
}
140143

144+
#[cfg(feature = "use_spin")]
141145
pub struct LockedHeap(Mutex<Heap>);
142146

147+
#[cfg(feature = "use_spin")]
143148
impl LockedHeap {
144149
/// Creates an empty heap. All allocate calls will return `None`.
145150
pub const fn empty() -> LockedHeap {
@@ -159,6 +164,7 @@ impl LockedHeap {
159164
}
160165
}
161166

167+
#[cfg(feature = "use_spin")]
162168
impl Deref for LockedHeap {
163169
type Target = Mutex<Heap>;
164170

@@ -167,6 +173,7 @@ impl Deref for LockedHeap {
167173
}
168174
}
169175

176+
#[cfg(feature = "use_spin")]
170177
unsafe impl<'a> Alloc for &'a LockedHeap {
171178
unsafe fn alloc(&mut self, layout: Layout) -> Result<*mut u8, AllocErr> {
172179
self.0.lock().allocate_first_fit(layout)

0 commit comments

Comments
 (0)