我在一个内核模块中写了下面一段代码,编译没问题,执行时报错(oops),好像是指针的问题,只要不在while循环中给j赋值就没问题,不知何故,第一次做内核模块,不知道内核态指针是不是还有什么特殊用法,求教
i = *hash_number + 1;
j = 0;
while ((i % HASH_MAX_REGIONS) != hash_number) {
if (dmc->access_stats[i].region_number != region_number) {
if (dmc->access_stats[i].Te == 0 && flag == 0) {
flag = 1;
j = i;
}
i++;
} else {
j = i;
break;
}
}
if (i == *hash_number && flag < 0)
return -1;
else
*hash_number = j;