浓毛老太交欧美老妇热爱乱,蜜臀性色av免费,妺妺窝人体色www看美女,久久久久久久久久久大尺度免费视频,麻豆人妻无码性色av专区

位置:51電子網(wǎng) » 技術(shù)資料 » 嵌入式系統(tǒng)

Linux系統(tǒng)調(diào)用例程system_call和參數(shù)傳遞

發(fā)布時間:2009/2/18 0:00:00 訪問次數(shù):2183

  系統(tǒng)調(diào)用接口調(diào)用“int $ox8o”指令進入內(nèi)核并準(zhǔn)各了相關(guān)參數(shù)后,剩下的工作就由系統(tǒng)調(diào)用例程來進行。linux定義的系統(tǒng)調(diào)用 例程的入口為system_call。下面具體介紹system_call所做的工作。

  system_call是用匯編語言編寫的,在i386體系中,其前半部分代碼如下:

  這部分代碼的任務(wù)是傳遞系統(tǒng)調(diào)用號和參數(shù)。

  前面談到,為了識別具體的內(nèi)核服務(wù)例程,必須用寄存器eax傳遞系統(tǒng)調(diào)用號。除此之外,某些內(nèi)核服務(wù)例程還需要一些由用戶提供 的參數(shù)。例如,內(nèi)核服務(wù)例程mmap()除系統(tǒng)調(diào)用號之外還需要6個參數(shù)。

  傳遞參數(shù)的任務(wù)是由處理器的寄存器來完成的。

  在ijbo系統(tǒng)中,用來進行參數(shù)傳遞工作的寄存器依次為eax、ebx、ecx、edx、est和edi。其中,eax被指定用于系統(tǒng)調(diào)用號的傳遞。 所以,在函數(shù)system_call中,一開始就使用宏save_all把處理器的各寄存器壓棧,以便以后系統(tǒng)調(diào)用服務(wù)例程可從內(nèi)核堆棧中根據(jù) 需要找到相關(guān)的參數(shù)。

  可見,為了傳遞參數(shù),在系統(tǒng)調(diào)用接口中就應(yīng)把所有參數(shù)按照規(guī)定事先存入各寄存器。至于參數(shù)多于6個的情況,可采用在內(nèi)存中設(shè) 置一個參數(shù)緩沖區(qū),而讓處理器的寄存器作為指針指向的這個參數(shù)緩沖區(qū)的辦法來解決。

  接下來,程序?qū)M程傳遞的系統(tǒng)調(diào)用號進行有效性檢查。如果無效,則系統(tǒng)調(diào)用中止:

  如果有效,則根據(jù)寄存器eax提供的系統(tǒng)調(diào)用號并通過syscall_table來調(diào)用對應(yīng)的內(nèi)核服務(wù)例程:call*sys_call_table(0,% eax,4)

  當(dāng)服務(wù)例程結(jié)束時,system_call從eax獲得返回值,然后跳轉(zhuǎn)到返回函數(shù)ret_from_sys_call返回用戶態(tài):

  movl % eax,24(% esp)

  jmp ret_from_sys_call

  歡迎轉(zhuǎn)載,信息來自維庫電子市場網(wǎng)(www.dzsc.com)



  系統(tǒng)調(diào)用接口調(diào)用“int $ox8o”指令進入內(nèi)核并準(zhǔn)各了相關(guān)參數(shù)后,剩下的工作就由系統(tǒng)調(diào)用例程來進行。linux定義的系統(tǒng)調(diào)用 例程的入口為system_call。下面具體介紹system_call所做的工作。

  system_call是用匯編語言編寫的,在i386體系中,其前半部分代碼如下:

  這部分代碼的任務(wù)是傳遞系統(tǒng)調(diào)用號和參數(shù)。

  前面談到,為了識別具體的內(nèi)核服務(wù)例程,必須用寄存器eax傳遞系統(tǒng)調(diào)用號。除此之外,某些內(nèi)核服務(wù)例程還需要一些由用戶提供 的參數(shù)。例如,內(nèi)核服務(wù)例程mmap()除系統(tǒng)調(diào)用號之外還需要6個參數(shù)。

  傳遞參數(shù)的任務(wù)是由處理器的寄存器來完成的。

  在ijbo系統(tǒng)中,用來進行參數(shù)傳遞工作的寄存器依次為eax、ebx、ecx、edx、est和edi。其中,eax被指定用于系統(tǒng)調(diào)用號的傳遞。 所以,在函數(shù)system_call中,一開始就使用宏save_all把處理器的各寄存器壓棧,以便以后系統(tǒng)調(diào)用服務(wù)例程可從內(nèi)核堆棧中根據(jù) 需要找到相關(guān)的參數(shù)。

  可見,為了傳遞參數(shù),在系統(tǒng)調(diào)用接口中就應(yīng)把所有參數(shù)按照規(guī)定事先存入各寄存器。至于參數(shù)多于6個的情況,可采用在內(nèi)存中設(shè) 置一個參數(shù)緩沖區(qū),而讓處理器的寄存器作為指針指向的這個參數(shù)緩沖區(qū)的辦法來解決。

  接下來,程序?qū)M程傳遞的系統(tǒng)調(diào)用號進行有效性檢查。如果無效,則系統(tǒng)調(diào)用中止:

  如果有效,則根據(jù)寄存器eax提供的系統(tǒng)調(diào)用號并通過syscall_table來調(diào)用對應(yīng)的內(nèi)核服務(wù)例程:call*sys_call_table(0,% eax,4)

  當(dāng)服務(wù)例程結(jié)束時,system_call從eax獲得返回值,然后跳轉(zhuǎn)到返回函數(shù)ret_from_sys_call返回用戶態(tài):

  movl % eax,24(% esp)

  jmp ret_from_sys_call

  歡迎轉(zhuǎn)載,信息來自維庫電子市場網(wǎng)(www.dzsc.com)



相關(guān)IC型號

熱門點擊

 

推薦技術(shù)資料

DFRobot—玩的就是
    如果說新車間的特點是“靈動”,F(xiàn)QPF12N60C那么... [詳細(xì)]
版權(quán)所有:51dzw.COM
深圳服務(wù)熱線:13751165337  13692101218
粵ICP備09112631號-6(miitbeian.gov.cn)
公網(wǎng)安備44030402000607
深圳市碧威特網(wǎng)絡(luò)技術(shù)有限公司
付款方式


 復(fù)制成功!