我正在查找最近Linux内核的内核代码。我在uio.h见过以下定义
ITER_IOVEC = 0,
ITER_KVEC = 2,
ITER_BVEC = 4, 我已经在网上搜索了它的意义,也看到了文档,但没有发现任何有趣的东西。
有谁知道这些常数的含义是什么,它们之间有什么区别吗?
发布于 2017-03-12 09:03:02
有谁知道这些常数的含义是什么,它们之间有什么区别吗?
实际上,您应该看看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;
};
};这些常量允许使用不同的迭代器来处理a buffer of data possibly in several chunks。
ITER_IOVEC过去经常在writev/readv函数提供的缓冲区上迭代,ITER_KVEC做的几乎一样,但是使用内核空间中的数据,而ITER_BVEC则用来处理部分内存映射页面。
您可以找到有关奥恩的详细信息,请不要错过评论。
https://stackoverflow.com/questions/42744637
复制相似问题