Obecnie pracuję z modułem jądra Linux i potrzebuję uzyskać dostęp do niektórych 64-bitowych wartości przechowywanych w tablicy, jednak najpierw muszę rzucić z pustego wskaźnika.Przesyłaj pustą tablicę do tablicy uint64_t w C
Korzystam z funkcji jądra phys_to_virt
, która zwraca wskaźnik pustej przestrzeni, i nie jestem do końca pewien, jak właściwie użyć tego pustego wskaźnika, aby uzyskać dostęp do elementów w tablicy, do której on wskazuje.
Obecnie robię tak:
void *ptr;
uint64_t test;
ptr = phys_to_virt(physAddr);
test = *(uint64_t*)ptr;
printk("Test: %llx\n", test);
Wartość Dostaję z testu nie jest to, co spodziewałem się zobaczyć w tablicy, więc jestem pewny, że robię coś złego . Potrzebuję dostępu do pierwszych trzech elementów w tablicy, więc muszę rzucić wskaźnik pustego miejsca na uint64_t [], ale nie jestem do końca pewien, jak to zrobić.
Każda rada byłaby mile widziana.
Dzięki
Sam kod wydaje się poprawny, ale odwzorowanie pamięci fizycznej na wirtualną nie jest prawidłową operacją we wszystkich przypadkach. Co dokładnie wskazuje twój "physAddr"? – SomeWittyUsername
Powinien wskazywać na tablicę elementów 512 zawierającą 64-bitowe wartości długie. – Tony
Ale czym jest ta tablica? Czy jest w pamięci współdzielonej w urządzeniu zewnętrznym? – SomeWittyUsername