the cost of inlining?

John de la Garza john at jjdev.com
Thu Dec 4 22:14:00 EST 2014


On Fri, Dec 05, 2014 at 01:32:35AM +0000, Jeff Haran wrote:
> $ cat atomic_read.c
> 
> #include <asm/atomic.h>
> #include <asm/system.h>
> 
> int samp_atomic_read(atomic_t *v)
> {
>         int val;
> 
>         val = atomic_read(v);
>         return val;
> }
I couldn't get it to build with the #inclue <asm/system.h>, but it built
when I removed it.

> I dump the resultant .ko, I get this:
> 
> > objdump -S -M intel atomic_read.ko
> 
> atomic_read.ko:     file format elf64-x86-64
> 
> 
> Disassembly of section .text:
> 
> 0000000000000000 <samp_atomic_read>:
> #include <asm/atomic.h>
> #include <asm/system.h>
> 
> int samp_atomic_read(atomic_t *v)
> {
>    0:   55                      push   rbp
>    1:   48 89 e5                mov    rbp,rsp
>    4:   e8 00 00 00 00          call   9 <samp_atomic_read+0x9>
>  *
>  * Atomically reads the value of @v.
>  */
> static inline int atomic_read(const atomic_t *v)
> {
>         return v->counter;
>    9:   8b 07                   mov    eax,DWORD PTR [rdi]
>     int val;
> 
>         val = atomic_read(v);
>         return val;
> }
>    b:   c9                      leave
>    c:   c3                      ret
>    d:   90                      nop
>    e:   90                      nop
>    f:   90                      nop
> 

My ouput differs:
john at vega:~/foo$ objdump -S -M intel atomic_read.ko

atomic_read.ko:     file format elf64-x86-64


Disassembly of section .text:

0000000000000000 <samp_atomic_read>:
   0: 55                    push   rbp
   1: 8b 07                 mov    eax,DWORD PTR [rdi]
   3: 48 89 e5              mov    rbp,rsp
   6: 5d                    pop    rbp
   7: c3                    ret




More information about the Kernelnewbies mailing list