summaryrefslogtreecommitdiff
path: root/kernel/src/allocators/buddy/bitvec.rs
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/src/allocators/buddy/bitvec.rs')
-rw-r--r--kernel/src/allocators/buddy/bitvec.rs50
1 files changed, 0 insertions, 50 deletions
diff --git a/kernel/src/allocators/buddy/bitvec.rs b/kernel/src/allocators/buddy/bitvec.rs
deleted file mode 100644
index c7f415a..0000000
--- a/kernel/src/allocators/buddy/bitvec.rs
+++ /dev/null
@@ -1,50 +0,0 @@
-use core::mem::transmute;
-
-use contracts::requires;
-
-/// A fixed-length vector of bits.
-pub struct BitVec([usize]);
-
-impl BitVec {
- fn from_mut(words: &mut [usize]) -> &mut BitVec {
- // SAFETY: The types have a newtype relationship.
- unsafe { transmute(words) }
- }
-
- fn from_ref(words: &[usize]) -> &BitVec {
- // SAFETY: The types have a newtype relationship.
- unsafe { transmute(words) }
- }
-
- /// Retrieves the value of a bit from the BitVec.
- #[requires(i < self.len())]
- pub fn get(&self, i: usize) -> bool {
- let word_index = i / usize::BITS as usize;
- let subword_index = i % usize::BITS as usize;
- let one_hot = 1 << subword_index;
- (self.0[word_index] & one_hot) != 0
- }
-
- /// Returns whether the BitVec is empty.
- pub fn is_empty(&self) -> bool {
- self.0.is_empty()
- }
-
- /// Returns the number of bits in the BitVec.
- pub fn len(&self) -> usize {
- self.0.len() * usize::BITS as usize
- }
-
- /// Sets the value of a bit in the BitVec.
- #[requires(i < self.len())]
- pub fn set(&mut self, i: usize, value: bool) {
- let word_index = i / usize::BITS as usize;
- let subword_index = i % usize::BITS as usize;
- let one_hot = 1 << subword_index;
- if value {
- self.0[word_index] |= one_hot;
- } else {
- self.0[word_index] &= !one_hot;
- }
- }
-}