android java层直接和kernel交互的最快的方法

  • Post author:
  • Post category:java


android java 和kernel 的交互方式

按照常规的要通过JNI实现, 然后jni 调用HAL的IOCTL ,或者类似Vold 中建立netlink 的方式和kernel交互。

实际上这不是一种高效的方式。这样在时间紧迫的情况下,如果您的程序中 java只是要主动和kernel交互的,获取一些信息,或者写入一些,那么可以完全采用如下的方法:

首先驱动随便实现一个的节点:

// sys/class/mynode/mydev/driver_level

static struct class *driver_class = NULL;

static struct device *driver_dev = NULL;


unsigned int  _level=0xff;

static ssize_t driver_level_show(struct device *dev,

struct device_attribute *attr, char *buf)

{

//  获取驱动的值

return sprintf(buf, “%u\n”,  _level);

}

static ssize_t driver_level_store(struct device *dev,

struct device_attribute *attr, const char *buf, size_t size)

{


int value = simple_strtoul(buf, NULL, 0);

_level=value;

// set value

//做需要的事情



版权声明:本文为zengkexu原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。