Skip to content
Snippets Groups Projects
Select Git revision
  • 4c5a898e9a1f0485c63b8bbcca19526f0b4cc9f6
  • master default protected
  • benchmark protected
  • v2.0.0-rc4
  • v2.0.0-rc2
  • v2.0.0-rc1
  • v1.1.1
  • v1.1.0
  • v1.0.0
  • v0.10.6
  • v0.10.5
  • v0.10.4
  • v0.10.3
  • v0.10.2
  • v0.10.1
  • v0.8.1
  • v0.10.0
  • v0.9.1
  • v0.9.0
  • v0.8.0
  • v0.7.1
  • v0.7.0
  • v0.6.0
23 results

paramtable.go

Blame
  • iov_iter.c 44.33 KiB
    // SPDX-License-Identifier: GPL-2.0-only
    #include <crypto/hash.h>
    #include <linux/export.h>
    #include <linux/bvec.h>
    #include <linux/fault-inject-usercopy.h>
    #include <linux/uio.h>
    #include <linux/pagemap.h>
    #include <linux/slab.h>
    #include <linux/vmalloc.h>
    #include <linux/splice.h>
    #include <linux/compat.h>
    #include <net/checksum.h>
    #include <linux/scatterlist.h>
    #include <linux/instrumented.h>
    
    #define PIPE_PARANOIA /* for now */
    
    #define iterate_iovec(i, n, __v, __p, skip, STEP) {	\
    	size_t left;					\
    	size_t wanted = n;				\
    	__p = i->iov;					\
    	__v.iov_len = min(n, __p->iov_len - skip);	\
    	if (likely(__v.iov_len)) {			\
    		__v.iov_base = __p->iov_base + skip;	\
    		left = (STEP);				\
    		__v.iov_len -= left;			\
    		skip += __v.iov_len;			\
    		n -= __v.iov_len;			\
    	} else {					\
    		left = 0;				\
    	}						\
    	while (unlikely(!left && n)) {			\
    		__p++;					\
    		__v.iov_len = min(n, __p->iov_len);	\
    		if (unlikely(!__v.iov_len))		\
    			continue;			\
    		__v.iov_base = __p->iov_base;		\
    		left = (STEP);				\
    		__v.iov_len -= left;			\
    		skip = __v.iov_len;			\
    		n -= __v.iov_len;			\
    	}						\
    	n = wanted - n;					\
    }
    
    #define iterate_kvec(i, n, __v, __p, skip, STEP) {	\
    	size_t wanted = n;				\
    	__p = i->kvec;					\
    	__v.iov_len = min(n, __p->iov_len - skip);	\
    	if (likely(__v.iov_len)) {			\
    		__v.iov_base = __p->iov_base + skip;	\
    		(void)(STEP);				\
    		skip += __v.iov_len;			\
    		n -= __v.iov_len;			\
    	}						\
    	while (unlikely(n)) {				\
    		__p++;					\
    		__v.iov_len = min(n, __p->iov_len);	\
    		if (unlikely(!__v.iov_len))		\
    			continue;			\
    		__v.iov_base = __p->iov_base;		\
    		(void)(STEP);				\
    		skip = __v.iov_len;			\
    		n -= __v.iov_len;			\
    	}						\
    	n = wanted;					\
    }
    
    #define iterate_bvec(i, n, __v, __bi, skip, STEP) {	\
    	struct bvec_iter __start;			\