Re: [PATCH v10 08/27] rust: adapt `alloc` crate to the kernel

From: Konstantin Shelekhin
Date: Tue Sep 27 2022 - 09:52:02 EST


On Tue, Sep 27, 2022 at 03:14:39PM +0200, Miguel Ojeda wrote:
[...]
> + /// Tries to append an element to the back of a collection.
> + ///
> + /// # Examples
> + ///
> + /// ```
> + /// let mut vec = vec![1, 2];
> + /// vec.try_push(3).unwrap();
> + /// assert_eq!(vec, [1, 2, 3]);
> + /// ```
> + #[inline]
> + #[stable(feature = "kernel", since = "1.0.0")]
> + pub fn try_push(&mut self, value: T) -> Result<(), TryReserveError> {
> + if self.len == self.buf.capacity() {
> + self.buf.try_reserve_for_push(self.len)?;
> + }
> + unsafe {
> + let end = self.as_mut_ptr().add(self.len);
> + ptr::write(end, value);
> + self.len += 1;
> + }
> + Ok(())
> + }
[...]

Not being able to pass GFP flags here kinda limits the scope of Rust in
kernel. I think that it must be supported in the final version that gets
in.