Lines Matching refs:iter

235 static struct msc_block_desc *msc_iter_bdesc(struct msc_iter *iter)  in msc_iter_bdesc()  argument
237 return iter->win->block[iter->block].bdesc; in msc_iter_bdesc()
240 static void msc_iter_init(struct msc_iter *iter) in msc_iter_init() argument
242 memset(iter, 0, sizeof(*iter)); in msc_iter_init()
243 iter->start_block = -1; in msc_iter_init()
244 iter->block = -1; in msc_iter_init()
249 struct msc_iter *iter; in msc_iter_install() local
251 iter = kzalloc(sizeof(*iter), GFP_KERNEL); in msc_iter_install()
252 if (!iter) in msc_iter_install()
264 kfree(iter); in msc_iter_install()
265 iter = ERR_PTR(-EBUSY); in msc_iter_install()
269 msc_iter_init(iter); in msc_iter_install()
270 iter->msc = msc; in msc_iter_install()
272 list_add_tail(&iter->entry, &msc->iter_list); in msc_iter_install()
276 return iter; in msc_iter_install()
279 static void msc_iter_remove(struct msc_iter *iter, struct msc *msc) in msc_iter_remove() argument
282 list_del(&iter->entry); in msc_iter_remove()
285 kfree(iter); in msc_iter_remove()
288 static void msc_iter_block_start(struct msc_iter *iter) in msc_iter_block_start() argument
290 if (iter->start_block != -1) in msc_iter_block_start()
293 iter->start_block = msc_win_oldest_block(iter->win); in msc_iter_block_start()
294 iter->block = iter->start_block; in msc_iter_block_start()
295 iter->wrap_count = 0; in msc_iter_block_start()
301 if (msc_block_wrapped(msc_iter_bdesc(iter))) in msc_iter_block_start()
302 iter->wrap_count = 2; in msc_iter_block_start()
306 static int msc_iter_win_start(struct msc_iter *iter, struct msc *msc) in msc_iter_win_start() argument
309 if (iter->start_win) in msc_iter_win_start()
312 iter->start_win = msc_oldest_window(msc); in msc_iter_win_start()
313 if (!iter->start_win) in msc_iter_win_start()
316 iter->win = iter->start_win; in msc_iter_win_start()
317 iter->start_block = -1; in msc_iter_win_start()
319 msc_iter_block_start(iter); in msc_iter_win_start()
324 static int msc_iter_win_advance(struct msc_iter *iter) in msc_iter_win_advance() argument
326 iter->win = msc_next_window(iter->win); in msc_iter_win_advance()
327 iter->start_block = -1; in msc_iter_win_advance()
329 if (iter->win == iter->start_win) { in msc_iter_win_advance()
330 iter->eof++; in msc_iter_win_advance()
334 msc_iter_block_start(iter); in msc_iter_win_advance()
339 static int msc_iter_block_advance(struct msc_iter *iter) in msc_iter_block_advance() argument
341 iter->block_off = 0; in msc_iter_block_advance()
344 if (iter->wrap_count && iter->block == iter->start_block) { in msc_iter_block_advance()
345 iter->wrap_count--; in msc_iter_block_advance()
346 if (!iter->wrap_count) in msc_iter_block_advance()
348 return msc_iter_win_advance(iter); in msc_iter_block_advance()
352 if (!iter->wrap_count && msc_block_last_written(msc_iter_bdesc(iter))) in msc_iter_block_advance()
354 return msc_iter_win_advance(iter); in msc_iter_block_advance()
357 if (++iter->block == iter->win->nr_blocks) in msc_iter_block_advance()
358 iter->block = 0; in msc_iter_block_advance()
361 if (!iter->wrap_count && iter->block == iter->start_block) in msc_iter_block_advance()
362 return msc_iter_win_advance(iter); in msc_iter_block_advance()
384 msc_buffer_iterate(struct msc_iter *iter, size_t size, void *data, in msc_buffer_iterate() argument
387 struct msc *msc = iter->msc; in msc_buffer_iterate()
391 if (iter->eof) in msc_buffer_iterate()
395 if (msc_iter_win_start(iter, msc)) in msc_buffer_iterate()
399 unsigned long data_bytes = msc_data_sz(msc_iter_bdesc(iter)); in msc_buffer_iterate()
400 void *src = (void *)msc_iter_bdesc(iter) + MSC_BDESC; in msc_buffer_iterate()
418 if (iter->block == iter->start_block && iter->wrap_count == 2) { in msc_buffer_iterate()
426 tocopy -= iter->block_off; in msc_buffer_iterate()
427 src += iter->block_off; in msc_buffer_iterate()
441 iter->block_off += copied; in msc_buffer_iterate()
442 iter->offset += copied; in msc_buffer_iterate()
448 if (msc_iter_block_advance(iter)) in msc_buffer_iterate()
842 struct msc_window *win, *iter; in msc_buffer_multi_free() local
844 list_for_each_entry_safe(win, iter, &msc->win_list, entry) in msc_buffer_multi_free()
1039 struct msc_iter *iter; in intel_th_msc_open() local
1044 iter = msc_iter_install(msc); in intel_th_msc_open()
1045 if (IS_ERR(iter)) in intel_th_msc_open()
1046 return PTR_ERR(iter); in intel_th_msc_open()
1048 file->private_data = iter; in intel_th_msc_open()
1055 struct msc_iter *iter = file->private_data; in intel_th_msc_release() local
1056 struct msc *msc = iter->msc; in intel_th_msc_release()
1058 msc_iter_remove(iter, msc); in intel_th_msc_release()
1102 struct msc_iter *iter = file->private_data; in intel_th_msc_read() local
1103 struct msc *msc = iter->msc; in intel_th_msc_read()
1135 ret = msc_buffer_iterate(iter, len, &u, msc_win_to_user); in intel_th_msc_read()
1137 *ppos = iter->offset; in intel_th_msc_read()
1154 struct msc_iter *iter = vma->vm_file->private_data; in msc_mmap_open() local
1155 struct msc *msc = iter->msc; in msc_mmap_open()
1162 struct msc_iter *iter = vma->vm_file->private_data; in msc_mmap_close() local
1163 struct msc *msc = iter->msc; in msc_mmap_close()
1187 struct msc_iter *iter = vmf->vma->vm_file->private_data; in msc_mmap_fault() local
1188 struct msc *msc = iter->msc; in msc_mmap_fault()
1210 struct msc_iter *iter = vma->vm_file->private_data; in intel_th_msc_mmap() local
1211 struct msc *msc = iter->msc; in intel_th_msc_mmap()