• John Ogness's avatar
    printk: adjust string limit macros · b0975c47
    John Ogness authored
    The various internal size limit macros have names and/or values that
    do not fit well to their current usage.
    
    Rename the macros so that their purpose is clear and, if needed,
    provide a more appropriate value. In general, the new macros and
    values will lead to less memory usage. The new macros are...
    
    PRINTK_MESSAGE_MAX:
    
    This is the maximum size for a formatted message on a console,
    devkmsg, or syslog. It does not matter which format the message has
    (normal or extended). It replaces the use of CONSOLE_EXT_LOG_MAX for
    console and devkmsg. It replaces the use of CONSOLE_LOG_MAX for
    syslog.
    
    Historically, normal messages have been allowed to print up to 1kB,
    whereas extended messages have been allowed to print up to 8kB.
    However, the difference in lengths of these message types is not
    significant and in multi-line records, normal messages are probably
    larger. Also, because 1kB is only slightly above the allowed record
    size, multi-line normal messages could be easily truncated during
    formatting.
    
    This new macro should be significantly larger than the allowed
    record size to allow sufficient space for extended or multi-line
    prefix text. A value of 2kB should be plenty of space. For normal
    messages this represents a doubling of the historically allowed
    amount. For extended messages it reduces the excessive 8kB size,
    thus reducing memory usage needed for message formatting.
    
    PRINTK_PREFIX_MAX:
    
    This is the maximum size allowed for a record prefix (used by
    console and syslog). It replaces PREFIX_MAX. The value is left
    unchanged.
    
    PRINTKRB_RECORD_MAX:
    
    This is the maximum size allowed to be reserved for a record in the
    ringbuffer. It is used by all readers and writers with the printk
    ringbuffer. It replaces LOG_LINE_MAX.
    
    Previously this was set to "1kB - PREFIX_MAX", which makes some
    sense if 1kB is the limit for normal message output and prefixes are
    enabled. However, with the allowance of larger output and the
    existence of multi-line records, the value is rather bizarre.
    
    Round the value up to 1kB.
    Signed-off-by: default avatarJohn Ogness <john.ogness@linutronix.de>
    Reviewed-by: default avatarPetr Mladek <pmladek@suse.com>
    Signed-off-by: default avatarPetr Mladek <pmladek@suse.com>
    Link: https://lore.kernel.org/r/20230109100800.1085541-9-john.ogness@linutronix.de
    b0975c47
internal.h 2.99 KB