2012-12-06 27 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代码的例子。