Lines Matching full:thresholds
438 t = rcu_dereference(memcg->thresholds.primary); in __mem_cgroup_threshold()
455 * Iterate backward over array of thresholds starting from in __mem_cgroup_threshold()
457 * If none of thresholds below usage is crossed, we read in __mem_cgroup_threshold()
467 * Iterate forward over array of thresholds starting from in __mem_cgroup_threshold()
469 * If none of thresholds above usage is crossed, we read in __mem_cgroup_threshold()
636 struct mem_cgroup_thresholds *thresholds; in __mem_cgroup_usage_register_event() local
649 thresholds = &memcg->thresholds; in __mem_cgroup_usage_register_event()
652 thresholds = &memcg->memsw_thresholds; in __mem_cgroup_usage_register_event()
658 if (thresholds->primary) in __mem_cgroup_usage_register_event()
661 size = thresholds->primary ? thresholds->primary->size + 1 : 1; in __mem_cgroup_usage_register_event()
663 /* Allocate memory for new array of thresholds */ in __mem_cgroup_usage_register_event()
671 /* Copy thresholds (if any) to new array */ in __mem_cgroup_usage_register_event()
672 if (thresholds->primary) in __mem_cgroup_usage_register_event()
673 memcpy(new->entries, thresholds->primary->entries, in __mem_cgroup_usage_register_event()
680 /* Sort thresholds. Registering of new threshold isn't time-critical */ in __mem_cgroup_usage_register_event()
699 kfree(thresholds->spare); in __mem_cgroup_usage_register_event()
700 thresholds->spare = thresholds->primary; in __mem_cgroup_usage_register_event()
702 rcu_assign_pointer(thresholds->primary, new); in __mem_cgroup_usage_register_event()
704 /* To be sure that nobody uses thresholds */ in __mem_cgroup_usage_register_event()
728 struct mem_cgroup_thresholds *thresholds; in __mem_cgroup_usage_unregister_event() local
736 thresholds = &memcg->thresholds; in __mem_cgroup_usage_unregister_event()
739 thresholds = &memcg->memsw_thresholds; in __mem_cgroup_usage_unregister_event()
744 if (!thresholds->primary) in __mem_cgroup_usage_unregister_event()
752 for (i = 0; i < thresholds->primary->size; i++) { in __mem_cgroup_usage_unregister_event()
753 if (thresholds->primary->entries[i].eventfd != eventfd) in __mem_cgroup_usage_unregister_event()
759 new = thresholds->spare; in __mem_cgroup_usage_unregister_event()
765 /* Set thresholds array to NULL if we don't have thresholds */ in __mem_cgroup_usage_unregister_event()
774 /* Copy thresholds and find current threshold */ in __mem_cgroup_usage_unregister_event()
776 for (i = 0, j = 0; i < thresholds->primary->size; i++) { in __mem_cgroup_usage_unregister_event()
777 if (thresholds->primary->entries[i].eventfd == eventfd) in __mem_cgroup_usage_unregister_event()
780 new->entries[j] = thresholds->primary->entries[i]; in __mem_cgroup_usage_unregister_event()
794 thresholds->spare = thresholds->primary; in __mem_cgroup_usage_unregister_event()
796 rcu_assign_pointer(thresholds->primary, new); in __mem_cgroup_usage_unregister_event()
798 /* To be sure that nobody uses thresholds */ in __mem_cgroup_usage_unregister_event()
803 kfree(thresholds->spare); in __mem_cgroup_usage_unregister_event()
804 thresholds->spare = NULL; in __mem_cgroup_usage_unregister_event()