В настоящее время я работаю с модулем ядра Linux, и мне нужно получить доступ к некоторым 64-разрядным значениям, хранящимся в массиве, однако мне сначала нужно наложить их из указателя void.Вставить указатель void в uint64_t массив в C
Я использую функцию ядра phys_to_virt
, которая возвращает указатель на пустоту, и я не совсем уверен, как на самом деле использовать этот указатель void для доступа к элементам в массиве, на который он указывает.
В настоящее время я делаю это:
void *ptr;
uint64_t test;
ptr = phys_to_virt(physAddr);
test = *(uint64_t*)ptr;
printk("Test: %llx\n", test);
Значение я получаю от теста не то, что я ожидал увидеть в массиве, так что я достаточно уверен, что я делаю что-то неправильно , Мне нужно получить доступ к первым трем элементам в массиве, поэтому мне нужно указать указатель void на uint64_t [], но я не совсем уверен, как это сделать.
Любые советы были бы весьма полезными.
Благодаря
Сам код кажется действительным, но отображение физической памяти в виртуальную не является допустимой операцией во всех случаях. Что именно указывает ваш 'physAddr'? – SomeWittyUsername
Он должен указывать на массив из 512 элементов, содержащий 64-битные значения. – Tony
Но что это за массив? Является ли он в общей памяти внутри внешнего устройства? – SomeWittyUsername