2

我正在开发一个位于 TCP 套接字之上的新套接字,出于性能原因,我想调用tcp_sendpage而不是tcp_sendmsgtcp_sendmsg会不必要地复制我的数据)。然而,我的输入是一个 kmalloc 的缓冲区,它可以是从几个字节到跨越几个页面的任何地方。tcp_sendpage想要一个struct page*, offset, 和size作为输入。如何将我的缓冲区转换为tcp_sendpage喜欢看的东西?

我发现virt_to_pageoffset_in_page; 但是,这只转换单个地址而不是整个缓冲区。在我看来,我需要一个函数,将我的(物理上连续的,如 所承诺的kmalloc)缓冲区转换为页面和偏移量数组

4

0 回答 0