On Tue, Oct 1, 2024 at 11:07 AM Alice Ryhl <aliceryhl@xxxxxxxxxx> wrote: > > This adds a simple seq file abstraction that lets you print to a seq > file using ordinary Rust printing syntax. > > An example user from Rust Binder: > > pub(crate) fn full_debug_print( > &self, > m: &SeqFile, > owner_inner: &mut ProcessInner, > ) -> Result<()> { > let prio = self.node_prio(); > let inner = self.inner.access_mut(owner_inner); > seq_print!( > m, > " node {}: u{:016x} c{:016x} pri {}:{} hs {} hw {} cs {} cw {}", > self.debug_id, > self.ptr, > self.cookie, > prio.sched_policy, > prio.prio, > inner.strong.has_count, > inner.weak.has_count, > inner.strong.count, > inner.weak.count, > ); > if !inner.refs.is_empty() { > seq_print!(m, " proc"); > for node_ref in &inner.refs { > seq_print!(m, " {}", node_ref.process.task.pid()); > } > } > seq_print!(m, "\n"); > for t in &inner.oneway_todo { > t.debug_print_inner(m, " pending async transaction "); > } > Ok(()) > } > > The `SeqFile` type is marked not thread safe so that `call_printf` can > be a `&self` method. The alternative is to use `self: Pin<&mut Self>` > which is inconvenient, or to have `SeqFile` wrap a pointer instead of > wrapping the C struct directly. > > Signed-off-by: Alice Ryhl <aliceryhl@xxxxxxxxxx> It's supposed to say this below the --- line: This series is based on top of vfs.rust.file for the NotThreadSafe type. I have no idea why b4 decided to drop this information ... Alice