Messages in this thread | | | Date | Tue, 10 May 2022 10:38:35 +0200 | From | Petr Mladek <> | Subject | Re: [PATCH v6 14/23] vsprintf: add new `%pA` format specifier |
| |
On Sat 2022-05-07 07:24:12, Miguel Ojeda wrote: > From: Gary Guo <gary@garyguo.net> > > This patch adds a format specifier `%pA` to `vsprintf` which formats > a pointer as `core::fmt::Arguments`. Doing so allows us to directly > format to the internal buffer of `printf`, so we do not have to use > a temporary buffer on the stack to pre-assemble the message on > the Rust side. > > This specifier is intended only to be used from Rust and not for C, so > `checkpatch.pl` is intentionally unchanged to catch any misuse. > > Co-developed-by: Alex Gaynor <alex.gaynor@gmail.com> > Signed-off-by: Alex Gaynor <alex.gaynor@gmail.com> > Co-developed-by: Wedson Almeida Filho <wedsonaf@google.com> > Signed-off-by: Wedson Almeida Filho <wedsonaf@google.com> > Signed-off-by: Gary Guo <gary@garyguo.net> > Co-developed-by: Miguel Ojeda <ojeda@kernel.org> > Signed-off-by: Miguel Ojeda <ojeda@kernel.org>
Feel free to use:
Acked-by: Petr Mladek <pmladek@suse.com>
See a comment below.
> --- > lib/vsprintf.c | 13 +++++++++++++ > 1 file changed, 13 insertions(+) > > diff --git a/lib/vsprintf.c b/lib/vsprintf.c > index 40d26a07a133..00f71f91d991 100644 > --- a/lib/vsprintf.c > +++ b/lib/vsprintf.c > @@ -2270,6 +2270,9 @@ int __init no_hash_pointers_enable(char *str) > } > early_param("no_hash_pointers", no_hash_pointers_enable); > > +/* Used for Rust formatting ('%pA'). */ > +char *rust_fmt_argument(char *buf, char *end, void *ptr); > + > /* > * Show a '%p' thing. A kernel extension is that the '%p' is followed > * by an extra set of alphanumeric characters that are extended format > @@ -2396,6 +2399,10 @@ early_param("no_hash_pointers", no_hash_pointers_enable); > * > * Note: The default behaviour (unadorned %p) is to hash the address, > * rendering it useful as a unique identifier. > + * > + * There is also a '%pA' format specifier, but it is only intended to be used > + * from Rust code to format core::fmt::Arguments. Do *not* use it from C. > + * See rust/kernel/print.rs for details. > */
It would be great to document it also in Documentation/core-api/printk-formats.rst I am sorry that I did not mentioned it earlier.
Also the check in checkpatch.pl, mentioned in another reply, sounds like a good idea.
Best Regards, Petr
| |