Cgroup Kernel APIs¶
Device Memory Cgroup API (dmemcg)¶
- 
bool dmem_cgroup_state_evict_valuable(struct dmem_cgroup_pool_state *limit_pool, struct dmem_cgroup_pool_state *test_pool, bool ignore_low, bool *ret_hit_low)¶
- Check if we should evict from test_pool 
Parameters
- struct dmem_cgroup_pool_state *limit_pool
- The pool for which we hit limits 
- struct dmem_cgroup_pool_state *test_pool
- The pool for which to test 
- bool ignore_low
- Whether we have to respect low watermarks. 
- bool *ret_hit_low
- Pointer to whether it makes sense to consider low watermark. 
Description
This function returns true if we can evict from test_pool, false if not. When returning false and ignore_low is false, ret_hit_low may be set to true to indicate this function can be retried with ignore_low set to true.
Return
bool
- 
void dmem_cgroup_unregister_region(struct dmem_cgroup_region *region)¶
- Unregister a previously registered region. 
Parameters
- struct dmem_cgroup_region *region
- The region to unregister. 
Description
This function undoes dmem_cgroup_register_region.
- 
struct dmem_cgroup_region *dmem_cgroup_register_region(u64 size, const char *fmt, ...)¶
- Register a regions for dev cgroup. 
Parameters
- u64 size
- Size of region to register, in bytes. 
- const char *fmt
- Region parameters to register 
- ...
- variable arguments 
Description
This function registers a node in the dmem cgroup with the name given. After calling this function, the region can be used for allocations.
Return
NULL or a struct on success, PTR_ERR on failure.
- 
void dmem_cgroup_pool_state_put(struct dmem_cgroup_pool_state *pool)¶
- Drop a reference to a dmem_cgroup_pool_state 
Parameters
- struct dmem_cgroup_pool_state *pool
- dmem_cgroup_pool_state
Description
Called to drop a reference to the limiting pool returned by
dmem_cgroup_try_charge().
- 
void dmem_cgroup_uncharge(struct dmem_cgroup_pool_state *pool, u64 size)¶
- Uncharge a pool. 
Parameters
- struct dmem_cgroup_pool_state *pool
- Pool to uncharge. 
- u64 size
- Size to uncharge. 
Description
Undoes the effects of dmem_cgroup_try_charge. Must be called with the returned pool as argument, and same index and size.
- 
int dmem_cgroup_try_charge(struct dmem_cgroup_region *region, u64 size, struct dmem_cgroup_pool_state **ret_pool, struct dmem_cgroup_pool_state **ret_limit_pool)¶
- Try charging a new allocation to a region. 
Parameters
- struct dmem_cgroup_region *region
- dmem region to charge 
- u64 size
- Size (in bytes) to charge. 
- struct dmem_cgroup_pool_state **ret_pool
- On succesfull allocation, the pool that is charged. 
- struct dmem_cgroup_pool_state **ret_limit_pool
- On a failed allocation, the limiting pool. 
Description
This function charges the region region for a size of size bytes.
If the function succeeds, ret_pool is set, which must be passed to
dmem_cgroup_uncharge() when undoing the allocation.
When this function fails with -EAGAIN and ret_limit_pool is non-null, it
will be set to the pool for which the limit is hit. This can be used for
eviction as argument to dmem_cgroup_evict_valuable(). This reference must be freed
with dmem_cgroup_pool_state_put().
Return
0 on success, -EAGAIN on hitting a limit, or a negative errno on failure.