Lines Matching refs:walk
33 void scatterwalk_start(struct scatter_walk *walk, struct scatterlist *sg) in scatterwalk_start() argument
35 walk->sg = sg; in scatterwalk_start()
39 walk->offset = sg->offset; in scatterwalk_start()
43 void *scatterwalk_map(struct scatter_walk *walk) in scatterwalk_map() argument
45 return kmap_atomic(scatterwalk_page(walk)) + in scatterwalk_map()
46 offset_in_page(walk->offset); in scatterwalk_map()
50 static void scatterwalk_pagedone(struct scatter_walk *walk, int out, in scatterwalk_pagedone() argument
56 page = sg_page(walk->sg) + ((walk->offset - 1) >> PAGE_SHIFT); in scatterwalk_pagedone()
66 walk->offset += PAGE_SIZE - 1; in scatterwalk_pagedone()
67 walk->offset &= PAGE_MASK; in scatterwalk_pagedone()
68 if (walk->offset >= walk->sg->offset + walk->sg->length) in scatterwalk_pagedone()
69 scatterwalk_start(walk, sg_next(walk->sg)); in scatterwalk_pagedone()
73 void scatterwalk_done(struct scatter_walk *walk, int out, int more) in scatterwalk_done() argument
75 if (!(scatterwalk_pagelen(walk) & (PAGE_SIZE - 1)) || !more) in scatterwalk_done()
76 scatterwalk_pagedone(walk, out, more); in scatterwalk_done()
80 void scatterwalk_copychunks(void *buf, struct scatter_walk *walk, in scatterwalk_copychunks() argument
84 unsigned int len_this_page = scatterwalk_pagelen(walk); in scatterwalk_copychunks()
90 vaddr = scatterwalk_map(walk); in scatterwalk_copychunks()
94 scatterwalk_advance(walk, len_this_page); in scatterwalk_copychunks()
102 scatterwalk_pagedone(walk, out, 1); in scatterwalk_copychunks()
110 struct scatter_walk walk; in scatterwalk_map_and_copy() local
122 scatterwalk_start(&walk, sg); in scatterwalk_map_and_copy()
123 scatterwalk_copychunks(buf, &walk, nbytes, out); in scatterwalk_map_and_copy()
124 scatterwalk_done(&walk, out, 0); in scatterwalk_map_and_copy()