Andrew Morton wrote: > which is painful, so we also provide the new vsprintf token as a > convenience: > > pr_warn("%|: hair on fire\n"); > > but I don't know what we can use in place of %|.
We are using %pEXTENSION where EXTENSION is [A-Za-z0-9]* because compiler does not need to understand what EXTENSION does; compiler needs to care about what character follows the % character and check type of corresponding argument if __printf() attribute is given. If we introduce a character which compiler does not know that follows the % character, compiler would be confused when checking type of corresponding argument. > I wonder if there's some way in which we can invent a vsprintf token > which means "insert corrent->comm here" and which doesn't require that > the caller pass in the additional argument? Therefore, if we want to omit passing corresponding argument, we should not introduce new character which compiler does not know that follows the % character. Also, % is the only character which everybody knows that it is reserved for the beginning of format specifier and %% is the only characters which everybody knows that it is reserved for literal % character. Therefore, what we could do for printing current thread's attributes would be either reserve a new character and add EXTENSION like pr_warn("$comm$: hair on fire\n"); pr_warn("Process $pid$: hair on fire\n"); or add EXTENSION after the %% characters like pr_warn("%%comm%%: hair on fire\n"); pr_warn("Process %%pid%%: hair on fire\n"); . -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/