root/include/linux/vmpressure.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


DEFINITIONS

This source file includes following definitions.
  1. vmpressure
  2. vmpressure_prio

   1 /* SPDX-License-Identifier: GPL-2.0 */
   2 #ifndef __LINUX_VMPRESSURE_H
   3 #define __LINUX_VMPRESSURE_H
   4 
   5 #include <linux/mutex.h>
   6 #include <linux/list.h>
   7 #include <linux/workqueue.h>
   8 #include <linux/gfp.h>
   9 #include <linux/types.h>
  10 #include <linux/cgroup.h>
  11 #include <linux/eventfd.h>
  12 
  13 struct vmpressure {
  14         unsigned long scanned;
  15         unsigned long reclaimed;
  16 
  17         unsigned long tree_scanned;
  18         unsigned long tree_reclaimed;
  19         /* The lock is used to keep the scanned/reclaimed above in sync. */
  20         spinlock_t sr_lock;
  21 
  22         /* The list of vmpressure_event structs. */
  23         struct list_head events;
  24         /* Have to grab the lock on events traversal or modifications. */
  25         struct mutex events_lock;
  26 
  27         struct work_struct work;
  28 };
  29 
  30 struct mem_cgroup;
  31 
  32 #ifdef CONFIG_MEMCG
  33 extern void vmpressure(gfp_t gfp, struct mem_cgroup *memcg, bool tree,
  34                        unsigned long scanned, unsigned long reclaimed);
  35 extern void vmpressure_prio(gfp_t gfp, struct mem_cgroup *memcg, int prio);
  36 
  37 extern void vmpressure_init(struct vmpressure *vmpr);
  38 extern void vmpressure_cleanup(struct vmpressure *vmpr);
  39 extern struct vmpressure *memcg_to_vmpressure(struct mem_cgroup *memcg);
  40 extern struct cgroup_subsys_state *vmpressure_to_css(struct vmpressure *vmpr);
  41 extern int vmpressure_register_event(struct mem_cgroup *memcg,
  42                                      struct eventfd_ctx *eventfd,
  43                                      const char *args);
  44 extern void vmpressure_unregister_event(struct mem_cgroup *memcg,
  45                                         struct eventfd_ctx *eventfd);
  46 #else
  47 static inline void vmpressure(gfp_t gfp, struct mem_cgroup *memcg, bool tree,
  48                               unsigned long scanned, unsigned long reclaimed) {}
  49 static inline void vmpressure_prio(gfp_t gfp, struct mem_cgroup *memcg,
  50                                    int prio) {}
  51 #endif /* CONFIG_MEMCG */
  52 #endif /* __LINUX_VMPRESSURE_H */

/* [<][>][^][v][top][bottom][index][help] */