私は次の関数呼び出しとしてmmapを介して、いくつかのメモリを割り当てるしています:私のシステムでは、カーネル空間でcopy_to_userがカーネルからmmapユーザーにデータをコピーできませんでしたか?ユーザ空間プログラムの開発で
void *memory;
int fd;
fd = open(filepath, O_RDWR);
if (fd < 0)
return errno;
memory = mmap(NULL, 4096, PROT_WRITE, MAP_SHARED, fd, 0);
if (memory == MAP_FAILED)
return -1;
//syscall() goes here
は、私は次のようにメモリマップされた領域にデータをコピーしようとしています呼び出し:
copy_to_user(memory,src,4096);
編集:私はそれは常に成功したmemory = malloc()
を行っているかのに対し、明確 copy_to_user()
コールのためのポストにコードをチェック追加のエラーを繰り返し、この場合には失敗しています。
この場合、mmapの権限フラグが間違っていますか?
エラーは何ですか? [perror()](http://man7.org/linux/man-pages/man3/perror.3.html)を使用していますか?あなたが実際に書いたものだけであなたを助けることはできません。 – Stargateur
カーネル空間のcopy_to_user()は、 'perror()'によって予測できる 'errno'を設定していません。 – bawejakunal