Lines Matching defs:di

64 vm_domainset_iter_init(struct vm_domainset_iter *di, struct domainset *ds,
68 di->di_domain = ds;
69 di->di_iter = iter;
70 di->di_policy = ds->ds_policy;
71 DOMAINSET_COPY(&ds->ds_mask, &di->di_valid_mask);
72 if (di->di_policy == DOMAINSET_POLICY_INTERLEAVE) {
93 di->di_offset = pindex;
96 di->di_minskip = true;
100 vm_domainset_iter_rr(struct vm_domainset_iter *di, int *domain)
103 *domain = di->di_domain->ds_order[
104 ++(*di->di_iter) % di->di_domain->ds_cnt];
108 vm_domainset_iter_prefer(struct vm_domainset_iter *di, int *domain)
113 d = di->di_domain->ds_order[
114 ++(*di->di_iter) % di->di_domain->ds_cnt];
115 } while (d == di->di_domain->ds_prefer);
120 vm_domainset_iter_interleave(struct vm_domainset_iter *di, int *domain)
124 d = di->di_offset % di->di_domain->ds_cnt;
125 *di->di_iter = d;
126 *domain = di->di_domain->ds_order[d];
130 vm_domainset_iter_next(struct vm_domainset_iter *di, int *domain)
133 KASSERT(di->di_n > 0,
134 ("vm_domainset_iter_first: Invalid n %d", di->di_n));
135 switch (di->di_policy) {
145 vm_domainset_iter_rr(di, domain);
148 vm_domainset_iter_prefer(di, domain);
152 di->di_policy);
159 vm_domainset_iter_first(struct vm_domainset_iter *di, int *domain)
162 switch (di->di_policy) {
165 if (DOMAINSET_ISSET(*domain, &di->di_valid_mask)) {
170 di->di_n = di->di_domain->ds_cnt + 1;
179 di->di_n = di->di_domain->ds_cnt;
180 vm_domainset_iter_rr(di, domain);
183 *domain = di->di_domain->ds_prefer;
184 di->di_n = di->di_domain->ds_cnt;
187 vm_domainset_iter_interleave(di, domain);
188 di->di_n = di->di_domain->ds_cnt;
192 di->di_policy);
194 KASSERT(di->di_n > 0,
195 ("vm_domainset_iter_first: Invalid n %d", di->di_n));
201 vm_domainset_iter_page_init(struct vm_domainset_iter *di, struct vm_object *obj,
215 vm_domainset_iter_init(di, dr->dr_policy, &dr->dr_iter, obj, pindex);
216 di->di_flags = *req;
217 *req = (di->di_flags & ~(VM_ALLOC_WAITOK | VM_ALLOC_WAITFAIL)) |
219 vm_domainset_iter_first(di, domain);
221 vm_domainset_iter_page(di, obj, domain);
225 vm_domainset_iter_page(struct vm_domainset_iter *di, struct vm_object *obj,
228 if (__predict_false(DOMAINSET_EMPTY(&di->di_valid_mask)))
232 while (--di->di_n != 0) {
233 vm_domainset_iter_next(di, domain);
234 if (DOMAINSET_ISSET(*domain, &di->di_valid_mask) &&
235 (!di->di_minskip || !vm_page_count_min_domain(*domain)))
240 if (di->di_minskip) {
241 di->di_minskip = false;
242 vm_domainset_iter_first(di, domain);
247 if ((di->di_flags & (VM_ALLOC_WAITOK | VM_ALLOC_WAITFAIL)) == 0)
253 vm_wait_doms(&di->di_valid_mask, 0);
256 if ((di->di_flags & VM_ALLOC_WAITFAIL) != 0)
260 vm_domainset_iter_first(di, domain);
266 _vm_domainset_iter_policy_init(struct vm_domainset_iter *di, int *domain,
270 di->di_flags = *flags;
271 *flags = (di->di_flags & ~M_WAITOK) | M_NOWAIT;
272 vm_domainset_iter_first(di, domain);
274 vm_domainset_iter_policy(di, domain);
278 vm_domainset_iter_policy_init(struct vm_domainset_iter *di,
282 vm_domainset_iter_init(di, ds, &curthread->td_domain.dr_iter, NULL, 0);
283 _vm_domainset_iter_policy_init(di, domain, flags);
287 vm_domainset_iter_policy_ref_init(struct vm_domainset_iter *di,
291 vm_domainset_iter_init(di, dr->dr_policy, &dr->dr_iter, NULL, 0);
292 _vm_domainset_iter_policy_init(di, domain, flags);
296 vm_domainset_iter_policy(struct vm_domainset_iter *di, int *domain)
298 if (DOMAINSET_EMPTY(&di->di_valid_mask))
302 while (--di->di_n != 0) {
303 vm_domainset_iter_next(di, domain);
304 if (DOMAINSET_ISSET(*domain, &di->di_valid_mask) &&
305 (!di->di_minskip || !vm_page_count_min_domain(*domain)))
310 if (di->di_minskip) {
311 di->di_minskip = false;
312 vm_domainset_iter_first(di, domain);
317 if ((di->di_flags & M_WAITOK) == 0)
321 vm_wait_doms(&di->di_valid_mask, 0);
324 vm_domainset_iter_first(di, domain);
330 vm_domainset_iter_ignore(struct vm_domainset_iter *di, int domain)
332 KASSERT(DOMAINSET_ISSET(domain, &di->di_valid_mask),
333 ("%s: domain %d not present in di_valid_mask for di %p",
334 __func__, domain, di));
335 DOMAINSET_CLR(domain, &di->di_valid_mask);
341 vm_domainset_iter_page(struct vm_domainset_iter *di, struct vm_object *obj,
349 vm_domainset_iter_page_init(struct vm_domainset_iter *di, struct vm_object *obj,
357 vm_domainset_iter_policy(struct vm_domainset_iter *di, int *domain)
364 vm_domainset_iter_policy_init(struct vm_domainset_iter *di,
372 vm_domainset_iter_policy_ref_init(struct vm_domainset_iter *di,
380 vm_domainset_iter_ignore(struct vm_domainset_iter *di __unused,