Lines Matching defs:vec

18  * @vec:	structure which receives pages / pfns of the addresses mapped.
21 * This function maps virtual addresses from @start and fills @vec structure
41 struct frame_vector *vec)
49 if (WARN_ON_ONCE(nr_frames > vec->nr_allocated))
50 nr_frames = vec->nr_allocated;
58 (struct page **)(vec->ptrs));
59 vec->got_ref = true;
60 vec->is_pfns = false;
61 vec->nr_frames = ret;
66 vec->nr_frames = 0;
74 * @vec: frame vector to put
80 void put_vaddr_frames(struct frame_vector *vec)
84 if (!vec->got_ref)
86 pages = frame_vector_pages(vec);
89 * get_vaddr_frames() got pages but vec was later converted to pfns.
95 unpin_user_pages(pages, vec->nr_frames);
96 vec->got_ref = false;
98 vec->nr_frames = 0;
104 * @vec: frame vector to convert
106 * Convert @vec to contain array of page pointers. If the conversion is
110 int frame_vector_to_pages(struct frame_vector *vec)
116 if (!vec->is_pfns)
118 nums = frame_vector_pfns(vec);
119 for (i = 0; i < vec->nr_frames; i++)
123 for (i = 0; i < vec->nr_frames; i++)
125 vec->is_pfns = false;
132 * @vec: frame vector to convert
134 * Convert @vec to contain array of pfns.
136 void frame_vector_to_pfns(struct frame_vector *vec)
142 if (vec->is_pfns)
144 pages = (struct page **)(vec->ptrs);
146 for (i = 0; i < vec->nr_frames; i++)
148 vec->is_pfns = true;
161 struct frame_vector *vec;
162 int size = struct_size(vec, ptrs, nr_frames);
176 vec = kvmalloc(size, GFP_KERNEL);
177 if (!vec)
179 vec->nr_allocated = nr_frames;
180 vec->nr_frames = 0;
181 return vec;
187 * @vec: Frame vector to free
191 void frame_vector_destroy(struct frame_vector *vec)
194 VM_BUG_ON(vec->nr_frames > 0);
195 kvfree(vec);