| /* SPDX-License-Identifier: MIT */ |
| /* |
| * Copyright © 2023-2024 Intel Corporation |
| */ |
| |
| #ifndef _CGROUP_DMEM_H |
| #define _CGROUP_DMEM_H |
| |
| #include <linux/types.h> |
| #include <linux/llist.h> |
| |
| struct dmem_cgroup_pool_state; |
| |
| /* Opaque definition of a cgroup region, used internally */ |
| struct dmem_cgroup_region; |
| |
| #if IS_ENABLED(CONFIG_CGROUP_DMEM) |
| struct dmem_cgroup_region *dmem_cgroup_register_region(u64 size, const char *name_fmt, ...) __printf(2,3); |
| void dmem_cgroup_unregister_region(struct dmem_cgroup_region *region); |
| 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); |
| void dmem_cgroup_uncharge(struct dmem_cgroup_pool_state *pool, u64 size); |
| 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); |
| |
| void dmem_cgroup_pool_state_put(struct dmem_cgroup_pool_state *pool); |
| #else |
| static inline __printf(2,3) struct dmem_cgroup_region * |
| dmem_cgroup_register_region(u64 size, const char *name_fmt, ...) |
| { |
| return NULL; |
| } |
| |
| static inline void dmem_cgroup_unregister_region(struct dmem_cgroup_region *region) |
| { } |
| |
| static inline 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) |
| { |
| *ret_pool = NULL; |
| |
| if (ret_limit_pool) |
| *ret_limit_pool = NULL; |
| |
| return 0; |
| } |
| |
| static inline void dmem_cgroup_uncharge(struct dmem_cgroup_pool_state *pool, u64 size) |
| { } |
| |
| static inline |
| 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) |
| { |
| return true; |
| } |
| |
| static inline void dmem_cgroup_pool_state_put(struct dmem_cgroup_pool_state *pool) |
| { } |
| |
| #endif |
| #endif /* _CGROUP_DMEM_H */ |