Lines Matching refs:idx
30 #define hugetlb_cgroup_from_counter(counter, idx) \
31 container_of(counter, struct hugetlb_cgroup, hugepage[idx])
36 __hugetlb_cgroup_counter_from_cgroup(struct hugetlb_cgroup *h_cg, int idx,
40 return &h_cg->rsvd_hugepage[idx];
41 return &h_cg->hugepage[idx];
45 hugetlb_cgroup_counter_from_cgroup(struct hugetlb_cgroup *h_cg, int idx)
47 return __hugetlb_cgroup_counter_from_cgroup(h_cg, idx, false);
51 hugetlb_cgroup_counter_from_cgroup_rsvd(struct hugetlb_cgroup *h_cg, int idx)
53 return __hugetlb_cgroup_counter_from_cgroup(h_cg, idx, true);
81 int idx;
83 for (idx = 0; idx < hugetlb_max_hstate; idx++) {
85 hugetlb_cgroup_counter_from_cgroup(h_cg, idx)))
94 int idx;
96 for (idx = 0; idx < HUGE_MAX_HSTATE; idx++) {
104 parent_h_cgroup, idx);
106 parent_h_cgroup, idx);
109 idx),
112 hugetlb_cgroup_counter_from_cgroup_rsvd(h_cgroup, idx),
116 1 << huge_page_order(&hstates[idx]));
119 hugetlb_cgroup_counter_from_cgroup(h_cgroup, idx),
123 hugetlb_cgroup_counter_from_cgroup_rsvd(h_cgroup, idx),
161 static void hugetlb_cgroup_move_parent(int idx, struct hugetlb_cgroup *h_cg,
182 page_counter_charge(&parent->hugepage[idx], nr_pages);
184 counter = &h_cg->hugepage[idx];
202 int idx;
205 idx = 0;
209 hugetlb_cgroup_move_parent(idx, h_cg, page);
212 idx++;
218 static inline void hugetlb_event(struct hugetlb_cgroup *hugetlb, int idx,
221 atomic_long_inc(&hugetlb->events_local[idx][event]);
222 cgroup_file_notify(&hugetlb->events_local_file[idx]);
225 atomic_long_inc(&hugetlb->events[idx][event]);
226 cgroup_file_notify(&hugetlb->events_file[idx]);
231 static int __hugetlb_cgroup_charge_cgroup(int idx, unsigned long nr_pages,
245 if (huge_page_order(&hstates[idx]) < HUGETLB_CGROUP_MIN_ORDER)
257 __hugetlb_cgroup_counter_from_cgroup(h_cg, idx, rsvd),
260 hugetlb_event(h_cg, idx, HUGETLB_MAX);
274 int hugetlb_cgroup_charge_cgroup(int idx, unsigned long nr_pages,
277 return __hugetlb_cgroup_charge_cgroup(idx, nr_pages, ptr, false);
280 int hugetlb_cgroup_charge_cgroup_rsvd(int idx, unsigned long nr_pages,
283 return __hugetlb_cgroup_charge_cgroup(idx, nr_pages, ptr, true);
287 static void __hugetlb_cgroup_commit_charge(int idx, unsigned long nr_pages,
298 void hugetlb_cgroup_commit_charge(int idx, unsigned long nr_pages,
302 __hugetlb_cgroup_commit_charge(idx, nr_pages, h_cg, page, false);
305 void hugetlb_cgroup_commit_charge_rsvd(int idx, unsigned long nr_pages,
309 __hugetlb_cgroup_commit_charge(idx, nr_pages, h_cg, page, true);
315 static void __hugetlb_cgroup_uncharge_page(int idx, unsigned long nr_pages,
328 page_counter_uncharge(__hugetlb_cgroup_counter_from_cgroup(h_cg, idx,
338 void hugetlb_cgroup_uncharge_page(int idx, unsigned long nr_pages,
341 __hugetlb_cgroup_uncharge_page(idx, nr_pages, page, false);
344 void hugetlb_cgroup_uncharge_page_rsvd(int idx, unsigned long nr_pages,
347 __hugetlb_cgroup_uncharge_page(idx, nr_pages, page, true);
350 static void __hugetlb_cgroup_uncharge_cgroup(int idx, unsigned long nr_pages,
357 if (huge_page_order(&hstates[idx]) < HUGETLB_CGROUP_MIN_ORDER)
360 page_counter_uncharge(__hugetlb_cgroup_counter_from_cgroup(h_cg, idx,
368 void hugetlb_cgroup_uncharge_cgroup(int idx, unsigned long nr_pages,
371 __hugetlb_cgroup_uncharge_cgroup(idx, nr_pages, h_cg, false);
374 void hugetlb_cgroup_uncharge_cgroup_rsvd(int idx, unsigned long nr_pages,
377 __hugetlb_cgroup_uncharge_cgroup(idx, nr_pages, h_cg, true);
458 int idx;
465 idx = MEMFILE_IDX(cft->private);
466 counter = &h_cg->hugepage[idx];
469 1 << huge_page_order(&hstates[idx]));
473 counter = &h_cg->rsvd_hugepage[idx];
480 counter = &h_cg->rsvd_hugepage[idx];
502 int ret, idx;
515 idx = MEMFILE_IDX(of_cft(of)->private);
516 nr_pages = round_down(nr_pages, 1 << huge_page_order(&hstates[idx]));
525 __hugetlb_cgroup_counter_from_cgroup(h_cg, idx, rsvd),
591 int idx;
596 idx = MEMFILE_IDX(cft->private);
599 max = atomic_long_read(&h_cg->events_local[idx][HUGETLB_MAX]);
601 max = atomic_long_read(&h_cg->events[idx][HUGETLB_MAX]);
618 static void __init __hugetlb_cgroup_file_dfl_init(int idx)
622 struct hstate *h = &hstates[idx];
630 cft->private = MEMFILE_PRIVATE(idx, RES_LIMIT);
638 cft->private = MEMFILE_PRIVATE(idx, RES_RSVD_LIMIT);
646 cft->private = MEMFILE_PRIVATE(idx, RES_USAGE);
653 cft->private = MEMFILE_PRIVATE(idx, RES_RSVD_USAGE);
660 cft->private = MEMFILE_PRIVATE(idx, 0);
662 cft->file_offset = offsetof(struct hugetlb_cgroup, events_file[idx]);
668 cft->private = MEMFILE_PRIVATE(idx, 0);
671 events_local_file[idx]);
682 static void __init __hugetlb_cgroup_file_legacy_init(int idx)
686 struct hstate *h = &hstates[idx];
694 cft->private = MEMFILE_PRIVATE(idx, RES_LIMIT);
701 cft->private = MEMFILE_PRIVATE(idx, RES_RSVD_LIMIT);
708 cft->private = MEMFILE_PRIVATE(idx, RES_USAGE);
714 cft->private = MEMFILE_PRIVATE(idx, RES_RSVD_USAGE);
720 cft->private = MEMFILE_PRIVATE(idx, RES_MAX_USAGE);
727 cft->private = MEMFILE_PRIVATE(idx, RES_RSVD_MAX_USAGE);
734 cft->private = MEMFILE_PRIVATE(idx, RES_FAILCNT);
741 cft->private = MEMFILE_PRIVATE(idx, RES_RSVD_FAILCNT);
753 static void __init __hugetlb_cgroup_file_init(int idx)
755 __hugetlb_cgroup_file_dfl_init(idx);
756 __hugetlb_cgroup_file_legacy_init(idx);