У меня проблема с макросом get_user (). Я сделал следующее:
Я запускаю следующую программу
int main()
{
int a = 20;
printf("address of a: %p", &a);
sleep(200);
return 0;
}
Когда программа запускается, она выводит адрес, скажем, 0xbff91914.
Затем я передаю этот адрес модулю, работающему в режиме ядра, который извлекает содержимое по этому адресу (в то время, когда я это делал, я также удостоверился, что процесс не завершился, потому что перевел его в режим ожидания на 200 секунд ...):
Адрес сначала отправляется в виде строки, и я приведу их к типу указателя.
int * ptr = (int*)simple_strtol(buffer, NULL,16);
printk("address: %p",ptr); // I use this line to make sure the cast is correct. When running, it outputs bff91914, as expected.
int val = 0;
int res;
res= get_user(val, (int*) ptr);
Однако res всегда не равно 0, что означает, что get_user возвращает ошибку. Мне интересно, в чем проблема ....
Спасибо !!
- Фангкай