• Sam Ravnborg's avatar
    Introduce new section reference annotations tags: __ref, __refdata, __refconst · 312b1485
    Sam Ravnborg authored
    Today we have the following annotations for functions/data
    referencing __init/__exit functions / data:
    
    __init_refok     => for init functions
    __initdata_refok => for init data
    __exit_refok     => for exit functions
    
    There is really no difference between the __init and __exit
    versions and simplify it and to introduce a shorter annotation
    the following new annotations are introduced:
    
    __ref      => for functions (code) that
                  references __*init / __*exit
    __refdata  => for variables
    __refconst => for const variables
    
    Whit this annotation is it more obvious what the annotation
    is for and there is no longer the arbitary division
    between __init and __exit code.
    
    The mechanishm is the same as before - a special section
    is created which is made part of the usual sections
    in the linker script.
    
    We will start to see annotations like this:
    
    -static struct pci_serial_quirk pci_serial_quirks[] = {
    +static const struct pci_serial_quirk pci_serial_quirks[] __refconst = {
    -----------------
    -static struct notifier_block __cpuinitdata cpuid_class_cpu_notifier =
    +static struct notifier_block cpuid_class_cpu_notifier __refdata =
    ----------------
    -static int threshold_cpu_callback(struct notifier_block *nfb,
    +static int __ref threshold_cpu_callback(struct notifier_block *nfb,
    
    [The above is just random samples].
    
    Note: No modifications were needed in modpost
    to support the new sections due to the newly introduced
    blacklisting.
    Signed-off-by: default avatarSam Ravnborg <sam@ravnborg.org>
    312b1485
vmlinux.lds.h 10.9 KB