有没有办法复制/映射返回page_address
到用户空间缓冲区传递文件的read
函数
我读的是
page_address()
返回页面的虚拟地址。并获取指向内核数据类型的页面的指针
例如我有一个包含这个的函数
void *rx_buf= page_address(arr_pages[i])
char buf[4094];
memcpy(buf,rx_bu,sizeof(page))
我可以使用 memcpy 或 copy_to_user 吗
memcpy(buf,rx_buf,sizeof(page));
或者
copy_to_user(buf,rx_buf,sizeof(struct page));
我读copy_to_user
的内容不允许这样做,因为如果buf
是用户空间缓冲区块,那么它会检查缓冲区是否在内存的用户部分中。这也阻止了用户空间应用程序要求内核读/写内核地址;
所以我想知道有没有办法将返回复制 page_address
到用户空间缓冲区