2012-12-06 26 views
0

我已經爲ARM體系結構實現了自定義系統調用sys_mycall。在電話上建立並下載後,日誌顯示sys_mycall正在運行。如何在Linux中調用C中的自定義系統調用

我的疑問是:

  1. 我如何調用從C文件這個系統調用。
  2. 可以以某種方式從java調用此係統調用(使用JNI或其他)。只需要提示一下如何在Android上實現這一點。
+1

你確定你需要你自己的系統調用嗎?通常這是一個壞主意!你不能只是做一個設備驅動程序..? –

+0

其實我想了解整個應用程序流程是如何工作的。從底層(Linux內核)到頂層(應用層)。 – Aakashdeep

+1

閱讀http://tldp.org/HOWTO/Assembly-HOWTO/它是x86特有的,但你可以並且應該將它轉換爲ARM –

回答

3

1)看看man 2 syscall對於int syscall(int number, ...),你應該可以調用你的系統調用並傳遞你需要的參數。

2)是的,使用JNI。創建一個JNI函數來調用你的C代碼,並從那裏進行系統調用。

1

這可以使用Android NDK

here做的是從Android應用程序調用C代碼的例子。