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
//做需要的事情