• Andi Kleen's avatar
    SYSCTL: Print binary sysctl warnings (nearly) only once · 4440095c
    Andi Kleen authored
    When printing legacy sysctls print the warning message
    for each of them only once.  This way there is a guarantee
    the syslog won't be flooded for any sane program.
    
    The original attempt at this made the tables non const and stored
    the flag inline.
    
    Linus suggested using a separate hash table for this, this is based on a
    code snippet from him.
    
    The hash implies this is not exact and can sometimes not print a
    new sysctl due to a hash collision, but in practice this should not
    be a problem
    
    I used a FNV32 hash over the binary string with a 32byte bitmap. This
    gives relatively little collisions when all the predefined binary sysctls
    are hashed:
    
    size 256
    bucket
    length      number
    0:          [25]
    1:          [67]
    2:          [88]
    3:          [47]
    4:          [22]
    5:          [6]
    6:          [1]
    
    The worst case is a single collision of 6 hash values.
    Signed-off-by: default avatarAndi Kleen <ak@linux.intel.com>
    4440095c
sysctl_binary.c 52.1 KB