diff options
Diffstat (limited to 'include/linux/memcontrol.h')
-rw-r--r-- | include/linux/memcontrol.h | 37 |
1 files changed, 33 insertions, 4 deletions
diff --git a/include/linux/memcontrol.h b/include/linux/memcontrol.h index 83ae11cbd12c..b0eb29ea0d9c 100644 --- a/include/linux/memcontrol.h +++ b/include/linux/memcontrol.h | |||
@@ -1273,12 +1273,12 @@ static inline bool mem_cgroup_under_socket_pressure(struct mem_cgroup *memcg) | |||
1273 | 1273 | ||
1274 | struct kmem_cache *memcg_kmem_get_cache(struct kmem_cache *cachep); | 1274 | struct kmem_cache *memcg_kmem_get_cache(struct kmem_cache *cachep); |
1275 | void memcg_kmem_put_cache(struct kmem_cache *cachep); | 1275 | void memcg_kmem_put_cache(struct kmem_cache *cachep); |
1276 | int memcg_kmem_charge_memcg(struct page *page, gfp_t gfp, int order, | ||
1277 | struct mem_cgroup *memcg); | ||
1278 | 1276 | ||
1279 | #ifdef CONFIG_MEMCG_KMEM | 1277 | #ifdef CONFIG_MEMCG_KMEM |
1280 | int memcg_kmem_charge(struct page *page, gfp_t gfp, int order); | 1278 | int __memcg_kmem_charge(struct page *page, gfp_t gfp, int order); |
1281 | void memcg_kmem_uncharge(struct page *page, int order); | 1279 | void __memcg_kmem_uncharge(struct page *page, int order); |
1280 | int __memcg_kmem_charge_memcg(struct page *page, gfp_t gfp, int order, | ||
1281 | struct mem_cgroup *memcg); | ||
1282 | 1282 | ||
1283 | extern struct static_key_false memcg_kmem_enabled_key; | 1283 | extern struct static_key_false memcg_kmem_enabled_key; |
1284 | extern struct workqueue_struct *memcg_kmem_cache_wq; | 1284 | extern struct workqueue_struct *memcg_kmem_cache_wq; |
@@ -1300,6 +1300,26 @@ static inline bool memcg_kmem_enabled(void) | |||
1300 | return static_branch_unlikely(&memcg_kmem_enabled_key); | 1300 | return static_branch_unlikely(&memcg_kmem_enabled_key); |
1301 | } | 1301 | } |
1302 | 1302 | ||
1303 | static inline int memcg_kmem_charge(struct page *page, gfp_t gfp, int order) | ||
1304 | { | ||
1305 | if (memcg_kmem_enabled()) | ||
1306 | return __memcg_kmem_charge(page, gfp, order); | ||
1307 | return 0; | ||
1308 | } | ||
1309 | |||
1310 | static inline void memcg_kmem_uncharge(struct page *page, int order) | ||
1311 | { | ||
1312 | if (memcg_kmem_enabled()) | ||
1313 | __memcg_kmem_uncharge(page, order); | ||
1314 | } | ||
1315 | |||
1316 | static inline int memcg_kmem_charge_memcg(struct page *page, gfp_t gfp, | ||
1317 | int order, struct mem_cgroup *memcg) | ||
1318 | { | ||
1319 | if (memcg_kmem_enabled()) | ||
1320 | return __memcg_kmem_charge_memcg(page, gfp, order, memcg); | ||
1321 | return 0; | ||
1322 | } | ||
1303 | /* | 1323 | /* |
1304 | * helper for accessing a memcg's index. It will be used as an index in the | 1324 | * helper for accessing a memcg's index. It will be used as an index in the |
1305 | * child cache array in kmem_cache, and also to derive its name. This function | 1325 | * child cache array in kmem_cache, and also to derive its name. This function |
@@ -1325,6 +1345,15 @@ static inline void memcg_kmem_uncharge(struct page *page, int order) | |||
1325 | { | 1345 | { |
1326 | } | 1346 | } |
1327 | 1347 | ||
1348 | static inline int __memcg_kmem_charge(struct page *page, gfp_t gfp, int order) | ||
1349 | { | ||
1350 | return 0; | ||
1351 | } | ||
1352 | |||
1353 | static inline void __memcg_kmem_uncharge(struct page *page, int order) | ||
1354 | { | ||
1355 | } | ||
1356 | |||
1328 | #define for_each_memcg_cache_index(_idx) \ | 1357 | #define for_each_memcg_cache_index(_idx) \ |
1329 | for (; NULL; ) | 1358 | for (; NULL; ) |
1330 | 1359 | ||