の配列をuint64_tをするためのvoidポインタをキャストします。は、私は現在、Linuxカーネルモジュールで働いていると私は、配列に格納されたいくつかの64ビット値にアクセスする必要がある、しかし私は最初のボイドポインタからキャストする必要がC
voidポインタを返すカーネル関数phys_to_virt
を使用していますが、実際にこのvoidポインタを使用してポインタが指す配列内の要素にアクセスする方法は完全にはわかりません。
void *ptr;
uint64_t test;
ptr = phys_to_virt(physAddr);
test = *(uint64_t*)ptr;
printk("Test: %llx\n", test);
私はテストから取得していた値は、私は、アレイ内見て期待したものではありませんので、私は私が何か間違ったことをやっているかなり確信しています。私は、配列内の最初の3つの要素にアクセスする必要があるので、私はuint64_tを[]にボイドポインタをキャストする必要がありますが、私はそれを行う方法はかなりわかりません。
アドバイスをいただければ幸いです。
おかげ
コード自体は有効なようだが、仮想への物理メモリをマッピングすることはすべての場合に有効な操作ではありません。あなたの 'physAddr'が指しているものは何ですか? – SomeWittyUsername
これは64ビット長の値を含む512素子アレイを指すべきです。 – Tony
しかし、この配列は何ですか?それは外部デバイス内の共有メモリにありますか? – SomeWittyUsername