看板 LinuxDev 關於我們 聯絡資訊
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