2017-03-12 1 views
0

私は最近のLinuxカーネルのカーネルコードを探していました。 uio.hで私はオンラインその意味を検索しても、ドキュメントを見ましたが、面白いものを発見していないしている定義ITER_IOVEC、ITER_KVEC、ITER_BVECとは何ですか?

  ITER_IOVEC = 0, 
      ITER_KVEC = 2, 
      ITER_BVEC = 4, 

下に見てきました。

これらの定数の意味は何ですか、それらの違いは何ですか?

答えて

0

これらの定数の意味は何ですか、それらの違いは何ですか?

実は、あなたはいくつかの行をご覧ください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に別のイテレータを使用することができます。

writev/readv機能により供給されたバッファを反復処理するために使用さ

ITER_IOVECITER_KVECはほぼ同じやるが、カーネル空間でのデータ、およびITER_BVECでメモリマップされたページの一部で動作するように。

詳細はlwnです。コメントはお見逃しなく。

関連する問題