1
理由(EFAULTでO_DIRECTの結果は)擬似コードの作業を以下のいないmmap入力メモリをO_DIRECT出力ファイルに書き込む方法は?
in_fd = open("/dev/mem");
in_mmap = mmap(in_fd);
out_fd = open("/tmp/file", O_DIRECT);
write(out_fd, in_mmap, PAGE_SIZE);
次ながら行い(なしO_DIRECT)
in_fd = open("/dev/mem");
in_mmap = mmap(in_fd);
out_fd = open("/tmp/file");
write(out_fd, in_mmap, PAGE_SIZE);
私はそれが仮想ユーザーページへの仮想カーネルページで何かだと思いますこれは書き込み呼び出しでは変換できません。 O_DIRECTと
よろしく、MMAPを使用
フリードリヒ
「O_DIRECT」の書き込みはページを固定する必要があります。多分それは問題です...あなたは実際に何をしようとしていますか?これがメモリマップされたハードウェアデバイスの場合は、ドライバに 'splice'サポートを追加する方が良いかもしれません...また、より完全な例(すべてのシステムコールのすべてのフラグを含む)を提供してください。理想的には誰でもコンパイルして再現することができます。 – Nemo