• Zwane Mwaikambo's avatar
    [PATCH] out-of-line locks / generic · 50658d33
    Zwane Mwaikambo authored
    This patch achieves out of line spinlocks by creating kernel/spinlock.c
    and using the _raw_* inline locking functions.
    
    Now, as much as this is supposed to be arch agnostic, there was still a
    fair amount of rummaging about in archs, mostly for the cases where the
    arch already has out of line locks and i wanted to avoid the extra call,
    saving that extra call also makes lock profiling easier.  PPC32/64 was
    an example of such an arch and i have added the necessary profile_pc()
    function as an example. 
    
    Size differences are with CONFIG_PREEMPT enabled since we wanted to
    determine how much could be saved by moving that lot out of line too.
    
    ppc64 = 259897 bytes:
       text    data     bss     dec     hex filename
    5489808 1962724  709064 8161596  7c893c vmlinux-after
    5749577 1962852  709064 8421493  808075 vmlinux-before
    
    sparc64 = 193368 bytes:
      text    data     bss     dec     hex filename
    3472037  633712  308920 4414669  435ccd vmlinux-after
    3665285  633832  308920 4608037  465025 vmlinux-before
    
    i386 = 416075 bytes
       text    data     bss     dec     hex filename
    5808371  867442  326864 7002677  6ada35 vmlinux-after
    6221254  870634  326864 7418752  713380 vmlinux-before
    
    x86-64 = 282446 bytes
       text    data     bss     dec     hex filename
    4598025 1450644  523632 6572301  64490d vmlinux-after
    4881679 1449436  523632 6854747  68985b vmlinux-before
    
    It has been compile tested (UP, SMP, PREEMPT) on i386, x86-64, sparc,
    sparc64, ppc64, ppc32 and runtime tested on i386, x86-64 and sparc64.
    Signed-off-by: default avatarZwane Mwaikambo <zwane@fsmlabs.com>
    Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
    50658d33
spinlock.c 4.81 KB