一个功能可以快速调用吗?在Linux内核中内联?

时间:2012-04-09 03:17:10

标签: gcc linux-kernel

我想定义一个将从entry_32.S调用的函数。它将在调用实际系统调用处理函数之前调用。

为了避免函数调用和参数传递的开销,我可以将my_foo声明为

   fastcall inline int my_foo (int n);

    /*in entry_32.S*/
    pushl %eax
    CFI_ADJUST_CFA_OFFSET 4
    SAVE_ALL
    ....
/* My code begins*/
    call my_foo
    cmpl $0, %eax
    jne syscall_wrong
    movl PT_ORIG_EAX(%esp), %eax
/* My code ends */
    call *sys_call_table(,%eax,4)

1 个答案:

答案 0 :(得分:0)

编译器可以在C代码中内联函数(无论它们是否具有inline关键字),但汇编程序并不那么聪明。你在装配中所写的内容正是将要组装的内容,而不是任何优化(如内联)。