【问题标题】:How to call a custom system call from C in Linux如何在 Linux 中从 C 调用自定义系统调用
【发布时间】:2012-12-06 06:28:48
【问题描述】:

我已经为 ARM 架构实现了一个自定义系统调用 sys_mycall。在手机上构建和下载后,日志显示sys_mycall 正在运行。

我的疑问是:

  1. 如何从 C 文件调用此系统调用。
  2. 我能否以某种方式从 java 调用这个系统调用(使用 JNI 或其他东西)。只需要一些关于如何在 Android 上实现此功能的提示即可。

【问题讨论】:

  • 您确定需要自己的系统调用吗?通常这是一个坏主意!你不能只做一个设备驱动..???
  • 实际上我正在尝试了解整个应用程序流程是如何工作的。从底部(Linux 内核)到顶部(应用层)。
  • 阅读 tldp.org/HOWTO/Assembly-HOWTO 它是特定于 x86 的,但您可以并且应该将其转置为 ARM

标签: android linux java-native-interface system


【解决方案1】:

1) 用它查看man 2 syscallint syscall(int number, ...),您应该能够调用您的系统调用并传递您需要/想要的参数。

2) 是的,为此使用 JNI。创建一个 JNI 函数来调用您的 C 代码,然后从那里进行系统调用。

【讨论】:

    【解决方案2】:

    这可以使用 Android NDK 完成

    here 是从 Android 应用程序调用 C 代码的示例。

    【讨论】:

      猜你喜欢
      • 2012-10-04
      • 1970-01-01
      • 1970-01-01
      • 2014-06-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-05
      相关资源
      最近更新 更多