2016-01-07 26 views
0

我正在運行一個測試套件來測試android內核中與IPC相關的功能。而我正在測試msgrcv系統調用時,它返回的錯誤函數沒有執行。關於android-kernel中的msgrcv?

這是真的msgrcv()系統調用沒有在android-kernel中實現,如果是這樣的話,爲什麼和android內核中的系統調用服務於msgrcv()系統調用。

我得到了相關聲明其中說系統V IPC(包括消息隊列)沒有實施仿生。但不知道這是什麼意思。

更新:我能夠在android內核中找到msgrcv的定義,但不知道爲什麼它沒有實現返回錯誤函數。

下面的代碼片段:

SYSCALL_DEFINE5(msgrcv, int, msqid, struct msgbuf __user *, msgp, size_t, msgsz, 
       long, msgtyp, int, msgflg) 
{ 
     return do_msgrcv(msqid, msgp, msgsz, msgtyp, msgflg, do_msg_fill); 
} 

請評論,如果信息不全,似乎模糊或者,幫助表示讚賞。

回答

1

系統V IPC可能在內核中可用,但系統調用接口不在仿生庫C中實現。例如,/bionic/libc/arch-arm/syscalls/包含有關ARM的所有系統調用實現。

+0

感謝您的輸入,如果我試圖繞過仿生接口並嘗試直接調用系統調用,那麼有可能嗎? –

+1

我不確定我是否明白你的意思。正確的方法是在仿生lib中實現msgrecv系統調用c。從內核中查找msgrecv的系統調用編號,然後從第139行http://androidxref.com/6.0.0_r1/xref/bionic/中查看該鏈接。你也可以在你的代碼中實現它。但我不確定在這兩種情況下違反許可證的情況。 – digitizedx

+0

好的,謝謝輸入 –