1
在内核空间,我有以下几点:从内核空间复制char *的二维数组到用户空间?
char * myData[MAX_BUF_SIZE][2];
我需要定义一个内核方法并将这些数据复制到用户空间,所以我将如何去定义这个方法?我有以下,但我不太确定我在做什么。
asmlinkage int sys_get_my_data(char __user ***data, int rowLen, int bufferSize) {
if (rowLen < 1 || bufferSize < 1 || rowLen > MAX_BUF_SIZE || bufferSize
> MAX_BUF_SIZE) {
return -1;
}
if(copy_to_user(data, myData, rowLen * bufferSize * dataCounter * 2))
{
printk(KERN_EMERG "Copy to user failure for get all minifiles\n");
return -1;
}
return 0;
}
帮助?
一切都指向以空字符结尾的字符串。真的,myData表示相互对应的两个值。也就是说,它包含对数据为 myData [i] [0]和myData [i] [1],它们都是以空字符结尾的字符串。我不害怕在这里浪费数据操作,所以如果我可以复制整块固定大小的内存,那很好。 – 2009-12-05 22:38:54
我不完全明白你的问题,你已经定义了一个新的系统调用权吗? copy_to_user将数据从内核指针复制到用户空间缓冲区中。 – 2009-12-05 22:39:55
fileDataMap来自哪里?不应该是我的数据? – mrduclaw 2009-12-05 22:46:54