Re: [問題] 為何要使用asmlinkage?

看板LinuxDev作者 (毛筆)時間14年前 (2011/11/02 01:33), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串3/4 (看更多)
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
文章代碼(AID): #1Ei2rZZH (LinuxDev)
文章代碼(AID): #1Ei2rZZH (LinuxDev)