On Fri, Apr 22, 2022 at 04:47:44PM -0400, Steven Rostedt wrote: > Which is something you could do on top of seq_buf. Point being, you do not > need to re-implement printbuf, and I have not looked at the code, but > instead, implement printbuf on top of seq_buf, and extend seq_buf where > needed. Like trace_seq does, and the patches I have for seq_file would do. > It would leave the string processing and buffer space management to > seq_buf, as there's ways to see "oh, we need more space, let's allocate > more" and then increase the heap. That sounds like it could work. > I would be more willing to accept a printbuf, if it was built on top of > seq_buf. That is, you don't need to change all your user cases, you just > need to make printbuf an extension of seq_buf by using it underneath, like > trace_seq does. Then it would not be re-inventing the wheel, but just > building on top of it. Hmm... At first glance, redoing printbuf on top of seq_buf looks like it would save a pretty trivial amount of code - and my engineering taste these days leans more toward less layering if it's only slightly more code; I think I might like printbuf and seq_buf to stay separate things (and both of them are pretty small). But it's definitely not an unreasonable idea - I can try it out and see how it turns out. Would you have any objections to making some changes to seq_buf? - You've got size and len as size_t, I've got them as unsigned. Given that we need to be checking for overflow anyways for correctens, I like having them as u32s. - seq_buf->readpos - it looks like this is only used by seq_buf_to_user(), does it need to be in seq_buf? - in printbufs, I make sure the buffer is always nul-terminated - seems simplest, given that we need to make sure there's always room for the terminating nul anyways. A downside of having printbuf on top of seq_buf is that now we've got two apis that functions can output to - vs. if we modified printbuf by adding a flag for "this is an external buffer, don't reallocate it". That approach would be less code overall, for sure. Could I get you to look over printbuf and share your thoughts on the different approaches?