作者inses (毛笔)
看板LinuxDev
标题Re: [问题] 为何要使用asmlinkage?
时间Wed Nov 2 01:33:21 2011
Google大神其实可以找到解答,
所谓system call是透过OS的system call handler
去执行对应的system call routine来达成。
system call handler ==> assembly code
system call routine ==> C code
而system call handler在call他的routine时,
会把general purpose register的值push到stack,
这时候routine就要从stack来pop出他要的参数。
当assembly code呼叫C function,并以stack传参数时,
在C function的prototype前面就要加上"asmlinkage"。
※ 引述《RouterHsieh (醉卧美人膝,醒掌天下权)》之铭言:
: 就小弟所知,用asmlinkage当修饰字的话,
: 该函数的参数在传递时会从stack读取而非从register。
: 一般而言,似乎只要是system call都会加上这个修饰字。
: 那我想问的是,之所以会有这样的需求,
: 其原因是否跟使用volatile是类似的呢?
: 这问题想了一天了而且也有孤狗过,不过没找到一个确切的理由或者说法就是了囧
: 还请板上的高手们多多指教(拜)
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 114.34.225.172