Lines Matching refs:iter
104 void rds_info_iter_unmap(struct rds_info_iterator *iter) in rds_info_iter_unmap() argument
106 if (iter->addr) { in rds_info_iter_unmap()
107 kunmap_atomic(iter->addr); in rds_info_iter_unmap()
108 iter->addr = NULL; in rds_info_iter_unmap()
115 void rds_info_copy(struct rds_info_iterator *iter, void *data, in rds_info_copy() argument
121 if (!iter->addr) in rds_info_copy()
122 iter->addr = kmap_atomic(*iter->pages); in rds_info_copy()
124 this = min(bytes, PAGE_SIZE - iter->offset); in rds_info_copy()
127 "bytes %lu\n", *iter->pages, iter->addr, in rds_info_copy()
128 iter->offset, this, data, bytes); in rds_info_copy()
130 memcpy(iter->addr + iter->offset, data, this); in rds_info_copy()
134 iter->offset += this; in rds_info_copy()
136 if (iter->offset == PAGE_SIZE) { in rds_info_copy()
137 kunmap_atomic(iter->addr); in rds_info_copy()
138 iter->addr = NULL; in rds_info_copy()
139 iter->offset = 0; in rds_info_copy()
140 iter->pages++; in rds_info_copy()
161 struct rds_info_iterator iter; in rds_info_getsockopt() local
214 iter.pages = pages; in rds_info_getsockopt()
215 iter.addr = NULL; in rds_info_getsockopt()
216 iter.offset = start & (PAGE_SIZE - 1); in rds_info_getsockopt()
218 func(sock, len, &iter, &lens); in rds_info_getsockopt()
223 rds_info_iter_unmap(&iter); in rds_info_getsockopt()