Re: [PATCH v3] printk: Add boottime and real timestamps

From: Prarit Bhargava
Date: Mon Aug 07 2017 - 08:41:20 EST




On 08/04/2017 11:36 AM, Mark Salyzyn wrote:
> On 08/03/2017 06:18 PM, Prarit Bhargava wrote:
>
>> diff --git a/arch/arm/configs/aspeed_g4_defconfig
>> b/arch/arm/configs/aspeed_g4_defconfig
>> index cfc2465e8b77..6c73c305ad17 100644
>> --- a/arch/arm/configs/aspeed_g4_defconfig
>> +++ b/arch/arm/configs/aspeed_g4_defconfig
>> @@ -162,7 +162,9 @@ CONFIG_JFFS2_FS_XATTR=y
>> CONFIG_UBIFS_FS=y
>> CONFIG_SQUASHFS=y
>> CONFIG_SQUASHFS_XZ=y
>> -CONFIG_PRINTK_TIME=y
>> +# CONFIG_PRINTK_TIME_DISABLE is not set
>> +CONFIG_PRINTK_TIME_LOCAL=Y
>> +CONFIG_PRINTK_TIME=1
>> CONFIG_DYNAMIC_DEBUG=y
>> CONFIG_STRIP_ASM_SYMS=y
>> CONFIG_DEBUG_FS=y
>
> savedefconfig tells me otherwise:
>
> -CONFIG_PRINTK_TIME=y
> +CONFIG_PRINTK_TIME_LOCAL=y
>
> is all that is needed, the rest is fluff and will cause a savedefconfig mismatch
> error.
>> +static int printk_time_set(const char *val, const struct kernel_param *kp)
>> +{
>> + char *param = strstrip((char *)val);
>> + int _printk_time;
>> +
>> + if (strlen(param) != 1)
>> + return -EINVAL;
> (see below) strlen is so restrictive, wouldn't it be nice(tm) to allow "boot",
> "monotonic" or "realtime" strings? Certainly KISS can handle the first letters
> for next to zero cost. (switch statement optimization)

Thanks Mark,

I had asked this question before and didn't get an answer: Do I need to
worry about the ABI of /sys/modules/printk/parameters/time. Since it hasn't
been explicitly added to the stable ABI files, I'm going to assume it wasn't
important enough to add it. Looking at google, however, leads to a lot
of hits for 'printk.time' kernel parameters settings so I think I better
maintain the legacy boolean settings.

I'm going to do: 0/n/N/1/y/Y to maintain the existing ABI, and add (as you
suggest above 'disable|local|boottime|monotonic|realtime' as valid
parameters.

>> +
>> + switch (param[0]) {
>> + case '0':
>> + case 'n':
>> + case 'N':
> I would wish for a few more 'convenience' cases:
>
> case 'd': case 'D': /* Disable */

It would be trivial then to add only the lower case options (I dislike upper
case settings ...) by adding

!strcmp(printk_time_str[0], param, 1)

P.