Linux 什么是ITER_IOVEC、ITER_KVEC和ITER_BVEC?
我正在寻找最近Linux内核的内核代码。在uio.h中,我看到了以下定义Linux 什么是ITER_IOVEC、ITER_KVEC和ITER_BVEC?,linux,linux-kernel,linux-device-driver,Linux,Linux Kernel,Linux Device Driver,我正在寻找最近Linux内核的内核代码。在uio.h中,我看到了以下定义 ITER_IOVEC = 0, ITER_KVEC = 2, ITER_BVEC = 4, 我在网上搜索了它的意思,也看到了文档,但没有发现任何有趣的东西 有人知道这些常数的含义是什么,它们之间有什么区别吗 有人知道这些常数的含义是什么,它们之间有什么区别吗 实际上,您应该看看uio.h中下面的几行: struct iov_iter { int ty
ITER_IOVEC = 0,
ITER_KVEC = 2,
ITER_BVEC = 4,
我在网上搜索了它的意思,也看到了文档,但没有发现任何有趣的东西
有人知道这些常数的含义是什么,它们之间有什么区别吗
有人知道这些常数的含义是什么,它们之间有什么区别吗
实际上,您应该看看uio.h中下面的几行:
struct iov_iter {
int type;
size_t iov_offset;
size_t count;
union {
const struct iovec *iov;
const struct kvec *kvec;
const struct bio_vec *bvec;
struct pipe_inode_info *pipe;
};
union {
unsigned long nr_segs;
int idx;
};
};
这些常量允许使用不同的迭代器来处理数据缓冲区(可能分为多个块)
ITER_IOVEC
用于迭代由writev/readv
函数提供的缓冲区,
ITER_-KVEC
的作用几乎相同,但使用内核空间中的数据,并使用ITER_-KVEC
处理部分内存映射页
您可以在上找到详细信息,不要错过评论