【发布时间】:2012-08-24 13:59:11
【问题描述】:
我有调用内核模块的 C 代码,我想将结构传递给它。这似乎是可行的前 - char device catch multiple (int) ioctl-arguments
但是我通过 java JNI 调用 c 代码。据说 C 结构映射是到 Java 对象。所以我将一个对象传递给 C 本机函数。
这是我的 JNI c 函数
JNIEXPORT jint JNICALL Java_com_context_test_ModCallLib_reNice
(JNIEnv *env, jclass clazz, jobject obj){
// convert objcet to struct
// call module through IOCTL passing struct as the parameter
}
我应该如何从 obj 中获取结构体?
编辑:这是我传递的对象,
class Nice{
int[] pids;
int niceVal;
Nice(List<Integer> pID, int n){
pids = new int[pID.size()];
for (int i=0; i < pids.length; i++)
{
pids[i] = pID.get(i).intValue();
}
niceVal = n;
}
}
我想要的结构是这样的,
struct mesg {
int pids[size_of_pids];
int niceVal;
};
我应该如何处理?
【问题讨论】:
-
你必须传递给内核模块的C结构被java端填满了?
-
是的,我认为这很容易,不是吗?而不是将数据传递给 C 并创建结构?
-
知道如何从传递的对象中获取结构吗?
标签: java android struct java-native-interface ioctl