]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
rust: id_pool: do not supply starting capacity
authorAlice Ryhl <aliceryhl@google.com>
Tue, 25 Nov 2025 13:59:40 +0000 (13:59 +0000)
committerYury Norov (NVIDIA) <yury.norov@gmail.com>
Tue, 2 Dec 2025 19:14:50 +0000 (14:14 -0500)
Rust Binder wants to use inline bitmaps whenever possible to avoid
allocations, so introduce a constructor for an IdPool with arbitrary
capacity that stores the bitmap inline.

The existing constructor could be renamed to with_capacity() to match
constructors for other similar types, but it is removed as there is
currently no user for it.

[Miguel: rust: id_pool: fix broken intra-doc link]

Acked-by: Yury Norov (NVIDIA) <yury.norov@gmail.com>
Reviewed-by: Burak Emir <bqe@google.com>
Reviewed-by: Danilo Krummrich <dakr@kernel.org>
Signed-off-by: Alice Ryhl <aliceryhl@google.com>
Signed-off-by: Yury Norov (NVIDIA) <yury.norov@gmail.com>
rust/kernel/id_pool.rs

index 7968b6c5566bf7022b865b5f59deaf46c96f747d..afde05f53588af055bcdb4fc279978b7e556242c 100644 (file)
@@ -93,6 +93,18 @@ impl ReallocRequest {
 }
 
 impl IdPool {
+    /// Constructs a new [`IdPool`].
+    ///
+    /// The pool will have a capacity of [`MAX_INLINE_LEN`].
+    ///
+    /// [`MAX_INLINE_LEN`]: BitmapVec::MAX_INLINE_LEN
+    #[inline]
+    pub fn new() -> Self {
+        Self {
+            map: BitmapVec::new_inline(),
+        }
+    }
+
     /// Constructs a new [`IdPool`] with space for a specific number of bits.
     ///
     /// A capacity below [`MAX_INLINE_LEN`] is adjusted to [`MAX_INLINE_LEN`].
@@ -229,3 +241,10 @@ impl IdPool {
         self.map.clear_bit(id);
     }
 }
+
+impl Default for IdPool {
+    #[inline]
+    fn default() -> Self {
+        Self::new()
+    }
+}