Lines Matching defs:objcg
258 struct obj_cgroup *objcg = container_of(ref, struct obj_cgroup, refcnt);
266 * objcg->nr_charged_bytes can't have an arbitrary byte value.
270 * 1) CPU0: objcg == stock->cached_objcg
275 * objcg->nr_charged_bytes = PAGE_SIZE - 92
279 * 92 bytes are added to objcg->nr_charged_bytes
284 nr_bytes = atomic_read(&objcg->nr_charged_bytes);
289 memcg = obj_cgroup_memcg(objcg);
292 list_del(&objcg->list);
297 kfree_rcu(objcg, rcu);
302 struct obj_cgroup *objcg;
305 objcg = kzalloc(sizeof(struct obj_cgroup), GFP_KERNEL);
306 if (!objcg)
309 ret = percpu_ref_init(&objcg->refcnt, obj_cgroup_release, 0,
312 kfree(objcg);
315 INIT_LIST_HEAD(&objcg->list);
316 return objcg;
322 struct obj_cgroup *objcg, *iter;
324 objcg = rcu_replace_pointer(memcg->objcg, NULL, true);
328 /* Move active objcg to the parent's list */
329 xchg(&objcg->memcg, parent);
331 list_add(&objcg->list, &parent->objcg_list);
343 percpu_ref_kill(&objcg->refcnt);
2920 * The allocated objcg pointers array is not accounted directly.
2969 * from a valid memcg pointer to objcg vector or back.
2980 struct obj_cgroup *objcg;
2984 objcg = page_obj_cgroups(page)[off];
2985 if (objcg)
2986 return obj_cgroup_memcg(objcg);
2997 struct obj_cgroup *objcg = NULL;
3010 objcg = rcu_dereference(memcg->objcg);
3011 if (objcg && obj_cgroup_tryget(objcg))
3013 objcg = NULL;
3017 return objcg;
3161 static bool consume_obj_stock(struct obj_cgroup *objcg, unsigned int nr_bytes)
3170 if (objcg == stock->cached_objcg && stock->nr_bytes >= nr_bytes) {
3237 static void refill_obj_stock(struct obj_cgroup *objcg, unsigned int nr_bytes)
3245 if (stock->cached_objcg != objcg) { /* reset if necessary */
3247 obj_cgroup_get(objcg);
3248 stock->cached_objcg = objcg;
3249 stock->nr_bytes = atomic_xchg(&objcg->nr_charged_bytes, 0);
3259 int obj_cgroup_charge(struct obj_cgroup *objcg, gfp_t gfp, size_t size)
3265 if (consume_obj_stock(objcg, size))
3280 memcg = obj_cgroup_memcg(objcg);
3293 refill_obj_stock(objcg, PAGE_SIZE - nr_bytes);
3299 void obj_cgroup_uncharge(struct obj_cgroup *objcg, size_t size)
3301 refill_obj_stock(objcg, size);
3723 struct obj_cgroup *objcg;
3736 objcg = obj_cgroup_alloc();
3737 if (!objcg) {
3741 objcg->memcg = memcg;
3742 rcu_assign_pointer(memcg->objcg, objcg);