diff options
Diffstat (limited to 'rust')
-rw-r--r-- | rust/bindings/bindings_helper.h | 1 | ||||
-rw-r--r-- | rust/kernel/bitmap.rs | 15 |
2 files changed, 16 insertions, 0 deletions
diff --git a/rust/bindings/bindings_helper.h b/rust/bindings/bindings_helper.h index 7bb575043c86..5d58316f871e 100644 --- a/rust/bindings/bindings_helper.h +++ b/rust/bindings/bindings_helper.h @@ -67,6 +67,7 @@ #include <linux/pm_opp.h> #include <linux/poll.h> #include <linux/property.h> +#include <linux/random.h> #include <linux/refcount.h> #include <linux/regulator/consumer.h> #include <linux/sched.h> diff --git a/rust/kernel/bitmap.rs b/rust/kernel/bitmap.rs index f349b1eb59f9..f45915694454 100644 --- a/rust/kernel/bitmap.rs +++ b/rust/kernel/bitmap.rs @@ -252,6 +252,21 @@ impl BitmapVec { pub fn len(&self) -> usize { self.nbits } + + /// Fills this `Bitmap` with random bits. + #[cfg(CONFIG_FIND_BIT_BENCHMARK_RUST)] + pub fn fill_random(&mut self) { + // SAFETY: `self.as_mut_ptr` points to either an array of the + // appropriate length or one usize. + unsafe { + bindings::get_random_bytes( + self.as_mut_ptr().cast::<ffi::c_void>(), + usize::div_ceil(self.nbits, bindings::BITS_PER_LONG as usize) + * bindings::BITS_PER_LONG as usize + / 8, + ); + } + } } impl Bitmap { |