[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH 1/6] xen/vsprintf: Introduce %*pb[l] for printing bitmaps
>>> On 07.09.18 at 15:01, <andrew.cooper3@xxxxxxxxxx> wrote: > On 07/09/18 08:41, Jan Beulich wrote: >>>>> On 06.09.18 at 14:08, <andrew.cooper3@xxxxxxxxxx> wrote: >>> The format identifier is consistent with Linux. The code is adapted from >>> bitmap_scn{,list}printf() but cleaned up. >> Irrespective of this I'm somewhat worried by ... >> >>> --- a/docs/misc/printk-formats.txt >>> +++ b/docs/misc/printk-formats.txt >>> @@ -13,6 +13,14 @@ Raw buffer as hex string: >>> Up to 64 characters. Buffer length expected via the field_width >>> paramter. i.e. printk("%*ph", 8, buffer); >>> >>> +Bitmaps (e.g. cpumask/nodemask): >>> + >>> + %*pb 4321 >>> + %*pbl 0,5,8-9,14 >>> + >>> + Print a bitmap as either a hex string, or a range list. Bitmap >>> length >>> + (in bits) expected via the field_width parameter. >> ... the l suffix here. It's not very likely that someone might mean to >> follow %pb by l, but it's syntactically ambiguous. > > I don't see anything ambiguous here. The l is for list, not for long, > and trailing modifiers are consistent with all the other %p infrastructure. Well, I can accept the single suffix char as a good and useful extension. I don't, however, think that making the suffixes arbitrarily long is too good an idea. >> Since the 'l' qualifier >> is so far meaningless for %p, why can't we use that instead, making >> usages look like %*lpb? > > First and foremost, diverging from Linux's well-documented and well-used > API not something we should do without a very very good reason. I'd drop the "very very", but then I agree. Yet we shouldn't slavishly follow what they do, when it's questionable whether the direction is indeed right. Hence my response here. > Irrespective of whether you think it is ambiguous or not, I don't view > this as a good enough (potential) issue to diverge. > > Furthermore, (and more likely to sway your opinion), N1570 indicates > that the 'l' length modifier is only applicable for the diouxXcs > conversion specifiers, and both Clang and GCC enforce this with -Wformat. > > andrewcoop@andrewcoop:/local/xen.git/xen$ clang-6.0 -Wall -Werror -Wextra > foo.c -o foo.o > foo.c:7:22: error: length modifier 'l' results in undefined behavior or no > effect with 'p' conversion specifier [-Werror,-Wformat] > printf("Testing %lpd\n", ptr); > ~^~ > 1 error generated. Yeah, I started to be concerned of this happening after I had sent the reply. Given this I guess we have no (good) choice besides going the suffix route. Jan _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |